code: func NewParserWithStorage(
  	scanner *Scanner,
  	storage storer.EncodedObjectStorer,
  	ob ...Observer,
  ) (*Parser, error) {
  	if !scanner.IsSeekable && storage == nil {
  		return nil, ErrNotSeekableSource
  	}
  
  	var deltas map[int64][]byte
  	if !scanner.IsSeekable {
  		deltas = make(map[int64][]byte)
  	}
  
  	return &Parser{
  		storage: storage,
  		scanner: scanner,
  		ob:      ob,
  		count:   0,
  		cache:   cache.NewBufferLRUDefault(),
  		deltas:  deltas,
  	}, nil
  }
docs: // NewParserWithStorage creates a new Parser. The scanner source must either
  // be seekable or a storage must be provided.