code: @Override
    public CloudStorageFileSystem newFileSystem(URI uri, Map<String, ?> env) {
      checkArgument(
          uri.getScheme().equalsIgnoreCase(CloudStorageFileSystem.URI_SCHEME),
          "Cloud Storage URIs must have '%s' scheme: %s",
          CloudStorageFileSystem.URI_SCHEME,
          uri);
      checkArgument(
          !isNullOrEmpty(uri.getHost()),
          "%s:// URIs must have a host: %s",
          CloudStorageFileSystem.URI_SCHEME,
          uri);
      checkArgument(
          uri.getPort() == -1
              && isNullOrEmpty(uri.getQuery())
              && isNullOrEmpty(uri.getFragment())
              && isNullOrEmpty(uri.getUserInfo()),
          "GCS FileSystem URIs mustn't have: port, userinfo, query, or fragment: %s",
          uri);
      CloudStorageUtil.checkBucket(uri.getHost());
      initStorage();
      return new CloudStorageFileSystem(
          this,
          uri.getHost(),
          CloudStorageConfiguration.fromMap(
              CloudStorageFileSystem.getDefaultCloudStorageConfiguration(), env));
    }
docs: Returns Cloud Storage file system, provided a URI, e.g. {@code gs://bucket}. The URI can
  include a path component (that will be ignored).
  
  @param uri bucket and current working directory, e.g. {@code gs://bucket}
  @param env map of configuration options, whose keys correspond to the method names of {@link
  CloudStorageConfiguration.Builder}. However you are not allowed to set the working
  directory, as that should be provided in the {@code uri}
  @throws IllegalArgumentException if {@code uri} specifies a port, user, query, or fragment, or
  if scheme is not {@value CloudStorageFileSystem#URI_SCHEME}