docs: public final RuntimeException processDoMethodInvokeException (Exception e, Object object, Object [] argumentArray) {
  //        if (e instanceof IllegalArgumentException) {
  //            //TODO: test if this is OK with new MOP, should be changed!
  //            // we don't want the exception being unwrapped if it is a IllegalArgumentException
  //            // but in the case it is for example a IllegalThreadStateException, we want the unwrapping
  //            // from the runtime
  //            //Note: the reason we want unwrapping sometimes and sometimes not is that the method
  //            // invocation tries to invoke the method with and then reacts with type transformation
  //            // if the invocation failed here. This is OK for IllegalArgumentException, but it is
  //            // possible that a Reflector will be used to execute the call and then an Exception from inside
  //            // the method is not wrapped in a InvocationTargetException and we will end here.
  //            boolean setReason = e.getClass() != IllegalArgumentException.class || this instanceof org.codehaus.groovy.reflection.GeneratedMetaMethod;
  //            return MetaClassHelper.createExceptionText("failed to invoke method: ", this, object, argumentArray, e, setReason);
  //        }
  
          if (e instanceof RuntimeException)
            return (RuntimeException) e;
  
          return MetaClassHelper.createExceptionText("failed to invoke method: ", this, object, argumentArray, e, true);
      }