code: public static ClientConfiguration getInstance(URI uri, Configuration conf) {
      Class<? extends ClientConfiguration> clazz = conf.getClass("fs." + uri.getScheme()
          + ".client.configuration.impl",
          DefaultClientConfiguration.class, ClientConfiguration.class);
      ClientConfiguration clientConf = classCache.get(clazz);
      if (clientConf == null) {
        clientConf = (ClientConfiguration) ReflectionUtils.newInstance(clazz,
            null);
        classCache.put(clazz, clientConf);
      }
      return clientConf;
    }
docs: Retrieves the implementation for {@link ClientConfiguration}. The
  expectation is that either this will be specified in the default
  configuration or it will be specified in the configuration of the client
  via command line options and environment variables.
  
  @param conf
  the configuration for the client
  @param uri
  the URI for the filesystem
  @return