code: public static <T> T getOrCreate(T instance, ClassLoader classLoader, String className) {
          if (instance != null) {
              return instance;
          } else if (className != null) {
              try {
                  return ClassLoaderUtil.newInstance(classLoader, className);
              } catch (Exception e) {
                  throw ExceptionUtil.rethrow(e);
              }
          } else {
              return null;
          }
      }
docs: Returns the {@code instance}, if not null, or constructs a new instance of the class using
  {@link #newInstance(ClassLoader, String)}.
  
  @param instance    the instance of the class, can be null
  @param classLoader the classloader used for class instantiation
  @param className   the name of the class being constructed. If null, null is returned.
  @return the provided {@code instance} or a newly constructed instance of {@code className}
  or null, if {@code className} was null