code: func (d *driver) listAll(context context.Context, prefix string) ([]string, error) {
  	list := make([]string, 0, 64)
  	query := &storage.Query{}
  	query.Prefix = prefix
  	query.Versions = false
  	for {
  		objects, err := storageListObjects(d.context(context), d.bucket, query)
  		if err != nil {
  			return nil, err
  		}
  		for _, obj := range objects.Results {
  			// GCS does not guarantee strong consistency between
  			// DELETE and LIST operations. Check that the object is not deleted,
  			// and filter out any objects with a non-zero time-deleted
  			if obj.Deleted.IsZero() {
  				list = append(list, obj.Name)
  			}
  		}
  		query = objects.Next
  		if query == nil {
  			break
  		}
  	}
  	return list, nil
  }
docs: // listAll recursively lists all names of objects stored at "prefix" and its subpaths.