import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;

class Tmp {
    public static void main(String[] args) throws Throwable {
        Object[] methodArgs = { "hello", 42 };
    
        var mh = MethodHandles.lookup()
            .findVirtual(Tmp.class, "method", MethodType.methodType(void.class, String.class, int.class));
    
        mh = mh.asSpreader(Object[].class, mh.type().parameterCount() - 1);
    
        mh.invokeExact(new Tmp(), methodArgs);
    }
  
    public void method(String s, int i) {
        System.out.println("Tmp.method(): " + s + ", " + i);
    }
}
