### Question:
DelegatingInvoker implements Invoker { @Override public Object invoke(Object proxy, Method method, Object[] arguments) throws Throwable { try { return method.invoke(delegateProvider.getObject(), arguments); } catch (InvocationTargetException e) { throw e.getTargetException(); } } DelegatingInvoker(ObjectProvider<? extends T> delegateProvider); @Override Object invoke(Object proxy, Method method, Object[] arguments);  }### Answer:
@Test public void test() throws Throwable { final Invoker invoker = new DelegatingInvoker<Echo>(ObjectProviderUtils.constant(new EchoImpl())); assertEquals("foo", invoker.invoke(null, Echo.class.getDeclaredMethod("echoBack", String.class), new Object[] { "foo" })); }