code: private static <T extends Bean> MethodHandle findConstructorHandle(
              Class<T> beanType,
              MethodHandles.Lookup lookup,
              Constructor<?> constructor) {
  
          try {
              // spreader allows an Object[] to invoke the positional arguments
              MethodType constructorType = MethodType.methodType(Void.TYPE, constructor.getParameterTypes());
              MethodHandle baseHandle = lookup.findConstructor(beanType, constructorType)
                      .asSpreader(Object[].class, constructor.getParameterTypes().length);
              // change the return type so caller can use invokeExact()
              return baseHandle.asType(baseHandle.type().changeReturnType(Bean.class));
          } catch (NoSuchMethodException ex) {
              throw new IllegalArgumentException("Unable to find constructor: " + beanType.getSimpleName());
          } catch (IllegalAccessException ex) {
              throw new IllegalArgumentException("Unable to access constructor: " + beanType.getSimpleName());
          }
      }
docs: finds constructor which matches types exactly