code: @Override
      protected Class<?> resolveProxyClass(final String[] interfaces) throws IOException,
              ClassNotFoundException {
          final Class<?>[] interfaceClasses = new Class[interfaces.length];
          for (int i = 0; i < interfaces.length; i++) {
              interfaceClasses[i] = Class.forName(interfaces[i], false, classLoader);
          }
          try {
              return Proxy.getProxyClass(classLoader, interfaceClasses);
          } catch (final IllegalArgumentException e) {
              return super.resolveProxyClass(interfaces);
          }
      }
docs: Create a proxy class that implements the specified interfaces using
  the specified ClassLoader or the super ClassLoader.
  
  @param interfaces the interfaces to implement
  @return a proxy class implementing the interfaces
  @throws IOException            in case of an I/O error
  @throws ClassNotFoundException if the Class cannot be found
  @see java.io.ObjectInputStream#resolveProxyClass(java.lang.String[])
  @since 2.1