### Question:
CDIJCacheHelper { public MethodMeta findMeta(final InvocationContext ic) { final Method mtd = ic.getMethod(); final Class<?> refType = findKeyType(ic.getTarget()); final MethodKey key = new MethodKey(refType, mtd); MethodMeta methodMeta = methods.get(key); if (methodMeta == null) { synchronized (this) { methodMeta = methods.get(key); if (methodMeta == null) { methodMeta = createMeta(ic); methods.put(key, methodMeta); } } } return methodMeta; }  MethodMeta findMeta(final InvocationContext ic); boolean isIncluded(final Class<?> aClass, final Class<?>[] in, final Class<?>[] out);  }### Answer:
@Test public void proxyCacheDefaults() { final CDIJCacheHelper helper = new CDIJCacheHelper(); final MyParent child1 = MyParent.class.cast(Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class<?>[]{MyChild1.class}, (proxy, method, args) -> null)); final CDIJCacheHelper.MethodMeta meta1 = helper.findMeta(newContext(child1)); assertEquals("child", meta1.getCacheResultCacheName()); final MyParent child2 = MyParent.class.cast(Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class<?>[]{MyChild2.class}, (proxy, method, args) -> null)); final CDIJCacheHelper.MethodMeta meta2 = helper.findMeta(newContext(child2)); assertEquals("child2", meta2.getCacheResultCacheName()); }