@Override
      public Object invokeMethod(final JavaMethod javaMethod, final Object proxy, final Object[] args, final List<?> implementations)
        throws IllegalAccessException, InvocationTargetException {
        final Method method = javaMethod.getMethod();
        List<Object> results =
          getMergedImplementations(method, args, method.getReturnType(), implementations, isIntersectionMethod(javaMethod));
        return results.isEmpty() ? null : results.get(0);
      }
@Override
      public Object invokeMethod(final JavaMethod javaMethod, final Object proxy, final Object[] args, final List<?> implementations)