if ( newPosition <= position + avail && newPosition >= position - pos ) {
if ( newPosition < position + avail && newPosition >= position - pos ) {
	public void position( long newPosition ) throws IOException {		final long position = readBytes;		if ( newPosition <= position + avail && newPosition >= position - pos ) {			pos += newPosition - position;			avail -= newPosition - position;			readBytes = newPosition;			return;		}		if ( rs != null ) rs.position( newPosition  );		else if ( fileChannel != null ) fileChannel.position( newPosition );		else throw new UnsupportedOperationException( "position() can only be called if the underlying byte stream implements the RepositionableStream interface or if the getChannel() method of the underlying byte stream exists and returns a FileChannel" );		readBytes = newPosition;		avail = Math.max( 0, is.read( buffer ) );		pos = 0;	}