code: @Override
    public int available() throws IOException
    {
      if (_readOffset < _readLength) {
        return _readLength - _readOffset;
      }
  
      StreamImpl source = _source;
  
      if (source != null) {
        return source.getAvailable();
      }
      else {
        return -1;
      }
    }
docs: Returns an estimate of the available bytes.  If a read would not block,
  it will always return greater than 0.