@Test
public void missingMethod() throws Exception {

    abstract class D implements I, Decorator<I> {
        abstract void missing();
        @Override public I delegate() {
            return new C("nope", 123);
        }
    }
    assertThrows(IllegalStateException.class,
                 () -> factory.implement(I.class, D.class));
}