### Question:
DecoratorFactory { public <T, D extends Decorator<T>> Class<? extends D> implement(Class<T> type, Class<D> decorator) { return meta(type, decorator).implementation; } private  DecoratorFactory(DecoratorGenerator generator); static DecoratorFactory get(); D create(Class<T> type, Class<D> decorator, Class<?>[] argumentTypes, Object[] arguments); D create(Class<T> type, Class<D> decorator); Class<? extends D> implement(Class<T> type, Class<D> decorator);  }### Answer:
@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)); }