code: private synchronized void configure(Configuration config) throws IOException {
      logger.atFine().log("GHFS.configure");
      logger.atFine().log("GHFS_ID = %s", GHFS_ID);
  
      overrideConfigFromFile(config);
      copyDeprecatedConfigurationOptions(config);
      // Set this configuration as the default config for this instance.
      setConf(config);
  
      enableFlatGlob = GCS_FLAT_GLOB_ENABLE.get(config, config::getBoolean);
      enableConcurrentGlob = GCS_CONCURRENT_GLOB_ENABLE.get(config, config::getBoolean);
      checksumType = GCS_FILE_CHECKSUM_TYPE.get(config, config::getEnum);
      defaultBlockSize = BLOCK_SIZE.get(config, config::getLong);
      reportedPermissions = new FsPermission(PERMISSIONS_TO_REPORT.get(config, config::get));
  
      if (gcsFsSupplier == null) {
        if (GCS_LAZY_INITIALIZATION_ENABLE.get(config, config::getBoolean)) {
          gcsFsSupplier =
              Suppliers.memoize(
                  () -> {
                    try {
                      GoogleCloudStorageFileSystem gcsFs = createGcsFs(config);
  
                      pathCodec = gcsFs.getPathCodec();
                      configureBuckets(gcsFs);
                      configureWorkingDirectory(config);
                      gcsFsInitialized = true;
  
                      return gcsFs;
                    } catch (IOException e) {
                      throw new RuntimeException("Failed to create GCS FS", e);
                    }
                  });
          pathCodec = getPathCodec(config);
        } else {
          setGcsFs(createGcsFs(config));
          configureBuckets(getGcsFs());
          configureWorkingDirectory(config);
        }
      } else {
        configureBuckets(getGcsFs());
        configureWorkingDirectory(config);
      }
  
      logger.atFine().log("GHFS.configure: done");
    }
docs: Configures GHFS using the supplied configuration.
  
  @param config Hadoop configuration object.