try {
return methodMissing.invoke(instance, new Object[]{methodName, arguments});
} catch (InvokerInvocationException iie) {
if (methodMissing instanceof ClosureMetaMethod && iie.getCause() instanceof MissingMethodException) {
MissingMethodException mme = (MissingMethodException) iie.getCause();
throw new MissingMethodExecutionFailed (mme.getMethod(), mme.getClass(),
mme.getArguments(),mme.isStatic(),mme);
}
throw iie;
} catch (MissingMethodException mme) {
if (methodMissing instanceof ClosureMetaMethod)
throw new MissingMethodExecutionFailed (mme.getMethod(), mme.getClass(),
mme.getArguments(),mme.isStatic(),mme);
else
throw mme;
}
} else if (original != null) throw original;