@Override
      public Object invokeMethod(final JavaMethod method, final Object proxy, final Object[] args, final List<?> implementations)
        throws IllegalAccessException, InvocationTargetException {

        final Type type = DomReflectionUtil.extractCollectionElementType(method.getGenericReturnType());
        assert type != null : "No generic return type in method " + method;
        return getMergedImplementations(method.getMethod(), args, ClassUtil.getRawType(type), implementations,
                                        isIntersectionMethod(method));
      }
@Override
      public Object invokeMethod(final JavaMethod method, final Object proxy, final Object[] args, final List<?> implementations)