public Stream openStream() { if (stream != null) { stream.Seek(position, SeekOrigin.Begin); return(stream); } stream = source.openStream(); if (!stream.CanSeek) { throw new IllegalStateException("Use TailBuffer for streams that do not support seeking"); } readEncoding(); findPosition(); return(stream); }