class GoogleCloudStorageFileSystem {

  public FileInfo getFileInfo(URI path) throws IOException {
    checkArgument(path != null, "path must not be null");
    // Validate the given path. true == allow empty object name.
    // One should be able to get info about top level directory (== bucket),
    // therefore we allow object name to be empty.
    StorageResourceId resourceId = StorageResourceId.fromUriPath(path, true);
    FileInfo fileInfo =
        FileInfo.fromItemInfo(
            getFileInfoInternal(resourceId, gcs.getOptions().isInferImplicitDirectoriesEnabled()));
    logger.atFinest().log("getFileInfo(path: %s): %s", path, fileInfo);
    return fileInfo;
  }

  public  GoogleCloudStorageFileSystem(
      Credential credential, GoogleCloudStorageFileSystemOptions options);
  @VisibleForTesting public  GoogleCloudStorageFileSystem(GoogleCloudStorage gcs);
  @VisibleForTesting public  GoogleCloudStorageFileSystem(
      GoogleCloudStorage gcs, GoogleCloudStorageFileSystemOptions options);

}