### Question:
Plugin implements InvocationHandler { private Plugin(Object target, Interceptor interceptor, Map<Class<?>, Set<Method>> signatureMap) { this.target = target; this.interceptor = interceptor; this.signatureMap = signatureMap; } private  Plugin(Object target, Interceptor interceptor, Map<Class<?>, Set<Method>> signatureMap); static Object wrap(Object target, Interceptor interceptor); @Override Object invoke(Object proxy, Method method, Object[] args);  }### Answer:
@Test void mapPluginShouldInterceptGet() { Map map = new HashMap(); map = (Map) new AlwaysMapPlugin().plugin(map); assertEquals("Always", map.get("Anything")); }
@Test void shouldNotInterceptToString() { Map map = new HashMap(); map = (Map) new AlwaysMapPlugin().plugin(map); assertNotEquals("Always", map.toString()); }
@Test public void shouldNotInterceptToString() { Map map = new HashMap(); map = (Map) new AlwaysMapPlugin().plugin(map); assertFalse("Always".equals(map.toString())); }
@Test public void mapPluginShouldInterceptGet() { Map map = new HashMap(); map = (Map) new AlwaysMapPlugin().plugin(map); assertEquals("Always", map.get("Anything")); }