code: func (d *driver) Stat(context context.Context, path string) (storagedriver.FileInfo, error) {
  	var fi storagedriver.FileInfoFields
  	//try to get as file
  	gcsContext := d.context(context)
  	obj, err := storageStatObject(gcsContext, d.bucket, d.pathToKey(path))
  	if err == nil {
  		if obj.ContentType == uploadSessionContentType {
  			return nil, storagedriver.PathNotFoundError{Path: path}
  		}
  		fi = storagedriver.FileInfoFields{
  			Path:    path,
  			Size:    obj.Size,
  			ModTime: obj.Updated,
  			IsDir:   false,
  		}
  		return storagedriver.FileInfoInternal{FileInfoFields: fi}, nil
  	}
  	//try to get as folder
  	dirpath := d.pathToDirKey(path)
  
  	var query *storage.Query
  	query = &storage.Query{}
  	query.Prefix = dirpath
  	query.MaxResults = 1
  
  	objects, err := storageListObjects(gcsContext, d.bucket, query)
  	if err != nil {
  		return nil, err
  	}
  	if len(objects.Results) < 1 {
  		return nil, storagedriver.PathNotFoundError{Path: path}
  	}
  	fi = storagedriver.FileInfoFields{
  		Path:  path,
  		IsDir: true,
  	}
  	obj = objects.Results[0]
  	if obj.Name == dirpath {
  		fi.Size = obj.Size
  		fi.ModTime = obj.Updated
  	}
  	return storagedriver.FileInfoInternal{FileInfoFields: fi}, nil
  }
docs: // Stat retrieves the FileInfo for the given path, including the current
  // size in bytes and the creation time.