final Object spiServiceLoader = new Invokable(cl, CLASS_NAME_SPISERVICELOADER) .invokeConstructor(new Class[] { ClassLoader.class }, new Object[] { cl }); final Object serviceLoader = new Invokable(cl, CLASS_NAME_SPISERVICELOADER).invokeMethod(METHOD_NAME_ONLY_ONE, new Class[] { Class.class, Class.class }, spiServiceLoader, new Object[] { Invokable.loadClass(cl, CLASS_NAME_SPISERVICELOADER), spiServiceLoader.getClass() }); final Object serviceRegistry = new Invokable(cl, CLASS_NAME_SERVICEREGISTRY).invokeConstructor( new Class<?>[] { Invokable.loadClass(cl, CLASS_NAME_SERVICELOADER) }, new Object[] { serviceLoader }); new Invokable(cl, serviceRegistry.getClass()).invokeMethod(METHOD_NAME_REGISTER, new Class<?>[] { serviceRegistry.getClass() }, null, new Object[] { serviceRegistry }); Object userViewObject = new Invokable(cl, serviceRegistry.getClass()).invokeMethod(METHOD_NAME_ONLY_ONE, new Class<?>[] { Class.class }, serviceRegistry, new Object[] { userViewClass });