Hard to know here what threads in future will call IndexInput.clone and if they will be time-limited or not. We therefore return an IndexInput that decides at clone-time what sort of IndexInput is appropriate to create as a clone (time-limited or not depending on calling thread state).