code: public static <C extends Configurable> C getConfiguration(Class<C> klass, Properties properties) {
          //Initialize configuration object
          C configuration;
          try {
              Constructor<C> constructor = klass.getDeclaredConstructor();
              constructor.setAccessible(true);
              configuration = constructor.newInstance();
          }
          catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException ex) {
              throw new RuntimeException(ex);
          }
  
          configuration.load(properties);
  
          return configuration;
      }
docs: Initializes the Configuration Object using a properties object.
  
  @param klass
  @param properties
  @param <C>
  @return