code: @SuppressWarnings("unchecked")
    public static <T> T createProxy(InvocationHandler handler, Class<T> itface)
    {
      if(handler instanceof ObjectProxy)
      {
        ObjectProxy proxy = (ObjectProxy) handler;
        if(!ReflectUtils.isSubClassOrInterfaceOf(proxy.getProxiedObject().getClass(), itface))
          throw new IllegalArgumentException(proxy.getProxiedObject().getClass() + " does not extend " + itface);
      }
  
      return (T) Proxy.newProxyInstance(itface.getClassLoader(),
                                        new Class<?>[] {itface},
                                        handler);
    }
docs: Convenient call which creates a proxy using the handler and the interface. It will also
  check that the object bien proxied (if implements <code>ObjectProxy</code>) properly
  implement the interface...
  
  @return the proxy (which implement all the interface)