}
private <T> void setHandler(Object proxyInstance, final MethodInvocation<? super T> handler) {
ProxyObject proxyObject = (ProxyObject) proxyInstance;
proxyObject.setHandler(new MethodHandler() {
public Object invoke(final Object self, final Method thisMethod, final Method proceed, Object[] args)
throws Throwable {
return handler.intercept((T) self, thisMethod, args, new SuperMethod() {
public Object invoke(Object proxy, Object[] args) {