code: void moveBlock()
      {
          int offset = _bufferOffset + _pos - _keepSizeBefore;
          // we need one additional byte, since movePos moves on 1 byte.
          if (offset > 0)
          {
              offset--;
          }
  
          int numBytes = _bufferOffset + _streamPos - offset;
  
          // check negative offset ????
          System.arraycopy(_bufferBase, offset, _bufferBase, 0, numBytes);
          _bufferOffset -= offset;
      }
docs: offset (from _buffer) of first not read byte from Stream