code: func NewPackfileWithCache(
  	index idxfile.Index,
  	fs billy.Filesystem,
  	file billy.File,
  	cache cache.Object,
  ) *Packfile {
  	s := NewScanner(file)
  	return &Packfile{
  		index,
  		fs,
  		file,
  		s,
  		cache,
  		make(map[int64]plumbing.ObjectType),
  	}
  }
docs: // NewPackfileWithCache creates a new Packfile with the given object cache.
  // If the filesystem is provided, the packfile will return FSObjects, otherwise
  // it will return MemoryObjects.