code: func (d *driver) List(context context.Context, path string) ([]string, error) {
  	var query *storage.Query
  	query = &storage.Query{}
  	query.Delimiter = "/"
  	query.Prefix = d.pathToDirKey(path)
  	list := make([]string, 0, 64)
  	for {
  		objects, err := storageListObjects(d.context(context), d.bucket, query)
  		if err != nil {
  			return nil, err
  		}
  		for _, object := 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 object.Deleted.IsZero() && object.ContentType != uploadSessionContentType {
  				list = append(list, d.keyToPath(object.Name))
  			}
  		}
  		for _, subpath := range objects.Prefixes {
  			subpath = d.keyToPath(subpath)
  			list = append(list, subpath)
  		}
  		query = objects.Next
  		if query == nil {
  			break
  		}
  	}
  	if path != "/" && len(list) == 0 {
  		// Treat empty response as missing directory, since we don't actually
  		// have directories in Google Cloud Storage.
  		return nil, storagedriver.PathNotFoundError{Path: path}
  	}
  	return list, nil
  }
docs: // List returns a list of the objects that are direct descendants of the
  //given path.