goja-core/src/main/java/goja/core/kits/reflect/ClassKit.java
public static Class<?> createCompositeInterface(Class<?>[] interfaces, ClassLoader classLoader) {
        Preconditions.checkNotNull(interfaces, "Interfaces must not be empty");
        Preconditions.checkNotNull(classLoader, "ClassLoader must not be null");
        return Proxy.getProxyClass(classLoader, interfaces);
    }
public static Class<?> createCompositeInterface(Class<?>[] interfaces, ClassLoader classLoader) {
        Preconditions.checkNotNull(interfaces, "Interfaces must not be empty");
        Preconditions.checkNotNull(classLoader, "ClassLoader must not be null");
        return Proxy.getProxyClass(classLoader, interfaces);
    }
Create a composite interface Class for the given interfaces,
implementing the given interfaces in one single Class.
<p>This implementation builds a JDK proxy class for the given interfaces.

@param interfaces  the interfaces to merge
@param classLoader the ClassLoader to create the composite Class in
@return the merged interface as Class
@see java.lang.reflect.Proxy#getProxyClass