Move the static FieldCache.DEFAULT field instance to atomic IndexReaders, so that FieldCache insanity caused by the WeakHashMap no longer occurs.
- Add a new method to IndexReader that by default throws an UOE:
- The SegmentReader implements this method and returns its own internal FieldCache implementation. This implementation just uses a HashMap<Entry<T>,Object>> to store entries.
- The SlowMultiReaderWrapper implements this method as well and basically behaves the same as the current FieldCacheImpl.
This issue won't solve the insanity that comes from inconsistent usage of a single field (for example retrieve both int and DocTermIndex for the same field).