// if reflection is forced or we've determined that we can't load bytecode, use reflection
        if (reflection || !CAN_LOAD_BYTECODE) return new ReflectionMethodFactory();
        // otherwise, generate invokers at runtime
        if (Options.COMPILE_INVOKEDYNAMIC.load() && Options.INVOKEDYNAMIC_HANDLES.load()) {
            return new InvokeDynamicMethodFactory(classLoader);
        } else {
            return new InvocationMethodFactory(classLoader);
        }
    }