I would like to improve AssertingCodec to add the restriction that merge instances can only be consumed from the thread that pulled them. This is something that I relied on in order to avoid cloning index inputs too much when implementing
LUCENE-4198, but this is neither documented nor checked.
For the record, I found that it was already an issue before
LUCENE-4198 was merged, for instance if you would pull a merge instance of the default stored fields reader and clone it (for use in another thread), it would no longer be a merge instance. So I think this new restriction makes sense?