public <T> Builder impl(Class<T> targetClass, Class<?>... types) {
      // don't do any work if an implementation has been found
      if (ctor != null) {
        return this;
      }

      try {
        ctor = new Ctor<T>(targetClass.getConstructor(types), targetClass);
      } catch (NoSuchMethodException e) {
        // not the right implementation
        problems.put(methodName(targetClass, types), e);
      }
      return this;
    }
Set the {@link ClassLoader} used to lookup classes by name.

<p>If not set, the current thread's ClassLoader is used.

@param newLoader a ClassLoader
@return this Builder for method chaining
amoro-common/src/main/java/org/apache/amoro/utils/DynConstructors.java