### Question:
Monitors { public <T> T newMonitor( Class<T> monitorClass, String... tags ) { requireInterface( monitorClass ); ClassLoader classLoader = monitorClass.getClassLoader(); MonitorInvocationHandler monitorInvocationHandler = new MonitorInvocationHandler( this, tags ); return monitorClass.cast( Proxy.newProxyInstance( classLoader, new Class<?>[]{monitorClass}, monitorInvocationHandler ) ); } Monitors();  Monitors( Monitors parent ); T newMonitor( Class<T> monitorClass, String... tags ); void addMonitorListener( Object monitorListener, String... tags ); void removeMonitorListener( Object monitorListener ); boolean hasListeners( Class<?> monitorClass );  }### Answer:
@Test public void shouldProvideNoOpDelegate() { Monitors monitors = new Monitors(); MyMonitor monitor = monitors.newMonitor( MyMonitor.class ); monitor.aVoid(); monitor.takesArgs( "ha", 12, new Object() ); }