public Object invoke(MethodInvocation methodInvocation) throws Throwable {
Object result = null;
Method invokedMethod = methodInvocation.getMethod();
if (this.shouldOverrideTarget(invokedMethod) || this.shouldMapToTargetField(invokedMethod)) {
throw new UnsupportedAnnotationException("Unsupported annotation on method: " + invokedMethod);
} else {
if (this.isIntroduced(invokedMethod)) {
result = this.executeOnProxy(methodInvocation, invokedMethod);
} else {
result = methodInvocation.proceed();