Was ist denn der "and"-Ausdruck in
return boolean(mFlags and STATE_CHANGED);

Ist das 'nen Macro?
Oder eine weitere potentielle Fehlerquelle (weiter oben beim Setzen wird ja geschoben)?