code: public static Method newMethod(Class<?> clazz, String name, Class<?>[] params, Class<?> returnType,
  			Class<?>[] exceptions,
  			int modifiers, String signature) {
  		// This is what the constructor looks like:
  		// Method(Class declaringClass, String name, Class[] parameterTypes, Class returnType,
  		// Class[] checkedExceptions, int modifiers, int slot, String signature,
  		// byte[] annotations, byte[] parameterAnnotations, byte[] annotationDefault)
  		Method returnMethod;
  		try {
  			jlrMethodCtor.setAccessible(true);
  			returnMethod = jlrMethodCtor.newInstance(clazz, name, params, returnType, exceptions, modifiers, 0,
  					signature, null,
  					null, null);
  		}
  		catch (Exception e) {
  			//This shouldn't happen...
  			ReflectiveInterceptor.log.log(Level.SEVERE, "Internal Error", e);
  			throw new Error(e);
  		}
  		return returnMethod;
  	}
docs: /*
  Create a new Method object from scratch. This Method object is 'fake' and will not be "invokable". ReflectionInterceptor will
  be responsible to make sure user code calling 'invoke' on this object will be intercepted and handled appropriately.