{
Object result = null;
Object token = null;
boolean inInvoke = false;
try {
token = nonNullListener.preInvoke(proxy, method, args);
inInvoke = true;
result = method.invoke(target.call(), args);
inInvoke = false;
nonNullListener.postInvoke(token, proxy, method, result);