@SuppressWarnings("unchecked")
	public static <T, U> T composeOnDelegate(Class<T> iface, T delegate,
			List<Class<? extends U>> mixins, MethodHandles.Lookup lookup) {
		Class<?>[] allIface = new Class<?>[1 + mixins.size()];
		allIface = mixins.toArray(allIface);
		allIface[allIface.length - 1] = iface;
		ComposedHandler handler = new ComposedHandler(delegate, lookup);
		return (T) Proxy.newProxyInstance(delegate.getClass().getClassLoader(), allIface, handler);
	}
Mix-in interfaces with default methods atop the given delegate.

Where both the delegate and a mixin provide an implementation, the delegate's is preferred.

@param <T> the delegate's and proxy's type
@param <U> a super interface common to all mixins
@param iface an interface of the delegate that also defines the proxy's type
@param delegate the delegate, providing implementations of all abstract methods
@param mixins the mixins
@param lookup a lookup which has access to the interfaces and their methods
Ghidra/Debug/ProposedUtils/src/main/java/utilities/util/ProxyUtilities.java