Bug: we don't always want to enable when deepEnabling.
Style: use braces.
Style: dot-syntax, missing braces.
Rewrite that so its clearer.

Also adds a @synchronized.
Use `indexesOfObjectsPassingTest:`.

I'm not sure how it behaves with the recursion though...
More @synchronize.
Style + duplicate method.