@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (IRulesRuntimeContextProvider.class.equals(method.getDeclaringClass())) { return method.invoke(this, args); } if (IEngineWrapper.class != method.getDeclaringClass()) { IOpenMember targetMethod = getMethodMap().get(method); if (targetMethod instanceof IOpenMethod) { validationHandler.validateProxyArguments(((IOpenMethod) targetMethod).getSignature(), getRuntimeEnv(), args); } } return super.invoke(proxy, method, args); } }