I actually prefer the name AtomicFieldCache, since this matches other
places (eg. AtomicReaderContext), and because it's not necessarily a
segment (SlowMultiReaderWrapper returns an instance).
The name SegmentFieldCacheImpl seems OK, but can't this class be
I love the name InsaneFieldCache!
For the new IR.getFieldCache() instead of a "generic" UOE can we throw
something like MR.fields() throws? Ie the exc message should explain
that you should use the SlowMRWrapper instead.
I'm nervous about how the [deprecated] FC makes a new SlowMRWrapper()
for each getXXX call – I think this class uses "this" as the
getFieldCacheKey? Won't this mean each lookup will build a new cache
entry? (Hmm... but then why don't tests fail... I think we have at
least one test verifying same instance is returned for 2 calls in a