source: class DecoratorFactoryTest  {
  
      @Inject DecoratorFactory factory;
  
      @Test
      public void delegateShadowedMethod() throws Exception {
  
target:         // The proxy should forward J#name() to I, even though J is not assignable to I.
          // This is a tricky case.
          abstract class D implements J, I, Decorator<I> {
              @Override public I delegate() {
                  return new C("yep", 123);
              }
          }
          J j = factory.create(I.class, D.class, new Class[]{DecoratorFactoryTest.class}, new Object[]{this});
          assertEquals("yep", j.name());
      }
  
  }