code: public static synchronized CouchbaseEnvironment getInstance(Config config)
    {
      Boolean sslEnabled = ConfigUtils.getBoolean(config, CouchbaseWriterConfigurationKeys.SSL_ENABLED, false);
      String sslKeystoreFile = ConfigUtils.getString(config, CouchbaseWriterConfigurationKeys.SSL_KEYSTORE_FILE, "");
      String sslKeystorePassword = ConfigUtils.getString(config, CouchbaseWriterConfigurationKeys.SSL_KEYSTORE_PASSWORD, "");
      String sslTruststoreFile = ConfigUtils.getString(config, CouchbaseWriterConfigurationKeys.SSL_TRUSTSTORE_FILE, "");
      String sslTruststorePassword = ConfigUtils.getString(config, CouchbaseWriterConfigurationKeys.SSL_TRUSTSTORE_PASSWORD, "");
      Boolean certAuthEnabled = ConfigUtils.getBoolean(config, CouchbaseWriterConfigurationKeys.CERT_AUTH_ENABLED, false);
  
      DefaultCouchbaseEnvironment.Builder builder = DefaultCouchbaseEnvironment
  	.builder()
          .sslEnabled(sslEnabled)
          .sslKeystoreFile(sslKeystoreFile)
          .sslKeystorePassword(sslKeystorePassword)
          .sslTruststoreFile(sslTruststoreFile)
          .sslTruststorePassword(sslTruststorePassword)
          .certAuthEnabled(certAuthEnabled);
  
      if (couchbaseEnvironment == null)
      {
        return builder.build();
      }
      else {
        return couchbaseEnvironment;
      }
    }
docs: Currently hands out a singleton DefaultCouchbaseEnvironment.
  This is done because it is recommended to use a single couchbase environment instance per JVM.
  TODO: Determine if we need to use the config to tweak certain parameters
  @param config
  @return