The name came from https://github.com/FabricMC/yarn/pull/338#discussion_r242899941
The comment is correctly describing the functionality, the class allows using a stream multiple times. But in my opinion the current name "LoopingStream" suggests that the stream continues at the beginning once it reached the end.
A name like "MultiUseStream" might fit better. Similarly the method getStream should be named newStream to indicate that a new stream and not an existing one is returned.
The fields could use the following names:
Obfuscated | Deobfuscated
--- | ---
a | collectedElements
b | delegate / source
And if it is possible to name the field of the anonymous class, then it could be named index / currentIndex.
I would suggest ReusableStream.
Most helpful comment
I would suggest ReusableStream.