code: func (r *Reader) Release() {
  	r.mu.Lock()
  	defer r.mu.Unlock()
  
  	if closer, ok := r.reader.(io.Closer); ok {
  		closer.Close()
  	}
  	if r.indexBlock != nil {
  		r.indexBlock.Release()
  		r.indexBlock = nil
  	}
  	if r.filterBlock != nil {
  		r.filterBlock.Release()
  		r.filterBlock = nil
  	}
  	r.reader = nil
  	r.cache = nil
  	r.bpool = nil
  	r.err = ErrReaderReleased
  }
docs: // Release implements util.Releaser.
  // It also close the file if it is an io.Closer.