public static MethodHandle makeSpreadArguments(MethodType newType, MethodHandle target, java.lang.Class spreadArgType, int spreadArgPos, int spreadArgCount)
    {
#if FIRST_PASS
        return(null);
#else
        TypeWrapper twComponent = TypeWrapper.FromClass(spreadArgType).ElementTypeWrapper;
        MethodHandleUtil.DynamicMethodBuilder dm = new MethodHandleUtil.DynamicMethodBuilder("AdapterMethodHandle.spreadArguments", newType, target);
        for (int i = 0, count = newType.parameterCount(); i < count; i++)
        {
            if (i == spreadArgPos)
            {
                for (int j = 0; j < spreadArgCount; j++)
                {
                    dm.Ldarg(i);
                    dm.LoadArrayElement(j, twComponent);
                    dm.Convert(twComponent.ClassObject, target.type().parameterType(i + j), 0);
                }
            }
            else
            {
                dm.Ldarg(i);
            }
        }
        dm.CallTarget();
        dm.Ret();
        return(dm.CreateAdapter());
#endif
    }