Code inspection showed that enumeration caching doesn't account for the existence of getters or setters.
Created attachment 42180 [details]
Comment on attachment 42180 [details]
In the über-big if statement, I have a feeling we usually put the && on the continuing line. Also, might be nicer with one line per clause.
Still, r+ with or without that change.