The 'equivalent' code doesn't compile: MethodHandle invoker = MethodHandles.genericInvoker(type); int spreadArgCount = type.parameterCount - objectArgCount; invoker = invoker.asSpreader(Object[].class, spreadArgCount); return invoker; at the second line, parameterCount should be parameterCount() cheers, Rémi