code: public void merge(CollectorConfiguration config, boolean overwrite)
              throws IllegalArgumentException {
          for (String key : config.getInstrumentation().keySet()) {
              if (getInstrumentation().containsKey(key) && !overwrite) {
                  throw new IllegalArgumentException("Instrumentation for '" + key + "' already exists");
              }
              getInstrumentation().put(key, config.getInstrumentation().get(key));
          }
          for (String key : config.getTransactions().keySet()) {
              if (getTransactions().containsKey(key) && !overwrite) {
                  throw new IllegalArgumentException("Transaction config for '" + key + "' already exists");
              }
              getTransactions().put(key, config.getTransactions().get(key));
          }
          getProperties().putAll(config.getProperties());
      }
docs: This method merges the supplied configuration into this configuration. If
  a conflict is found, if overwrite is true then the supplied config element
  will be used, otherwise an exception will be raised.
  
  @param config The configuration to merge
  @param overwrite Whether to overwrite when conflict found
  @throws IllegalArgumentException Failed to merge due to a conflict