call text: Test.invoke(); class: public class GeneratedEvaluationClass { static void invoke() { callApply1(null, () -> callMethod1(null)); } public static void callMethod1(Object object) { try { Class klass = Class.forName("WithReflectionAccess"); java.lang.reflect.Method member = null; int interfaceNumber = -1; Class[] interfaces = null; while (member == null) { try { member = klass.getDeclaredMethod("method"); } catch (ReflectiveOperationException e) { if (interfaceNumber == -1) { interfaces = klass.getInterfaces(); interfaceNumber = 0; } if (interfaceNumber < interfaces.length) { klass = interfaces[interfaceNumber]; interfaceNumber += 1; } else { klass = klass.getSuperclass(); if (klass == null) throw e; interfaceNumber = -1; } } } member.setAccessible(true); member.invoke(object); } catch (ReflectiveOperationException e) { throw new RuntimeException(e); } } public static void callApply1(Object object, Runnable runnable) { try { Class klass = Class.forName("WithReflectionAccess"); java.lang.reflect.Method member = null; int interfaceNumber = -1; Class[] interfaces = null; while (member == null) { try { member = klass.getDeclaredMethod("apply", Class.forName("java.lang.Runnable")); } catch (ReflectiveOperationException e) { if (interfaceNumber == -1) { interfaces = klass.getInterfaces(); interfaceNumber = 0; } if (interfaceNumber < interfaces.length) { klass = interfaces[interfaceNumber]; interfaceNumber += 1; } else { klass = klass.getSuperclass(); if (klass == null) throw e; interfaceNumber = -1; } } } member.setAccessible(true); member.invoke(object, runnable); } catch (ReflectiveOperationException e) { throw new RuntimeException(e); } } }