code: private <T> T instantiateClass(PropertyKey propertyKey) {
          T object = null;
          String property = properties.getProperty(propertyKey.getKey());
          if (property != null) {
              try {
                  Class<T> clazz = ClassLoaderUtils.loadClass(property);
                  LOGGER.debug("Instantiate {}", clazz);
                  object = clazz.newInstance();
              } catch (ClassNotFoundException e) {
                  LOGGER.error("Couldn't load the " + property + " class given by the " + propertyKey + " property", e);
              } catch (InstantiationException e) {
                  LOGGER.error("Couldn't instantiate the " + property + " class given by the " + propertyKey + " property", e);
              } catch (IllegalAccessException e) {
                  LOGGER.error("Couldn't access the " + property + " class given by the " + propertyKey + " property", e);
              }
          }
          return object;
      }
docs: Instantiate class associated to the given property key
  
  @param propertyKey property key
  @param <T>         class parameter type
  @return class instance