code: public Object execute(Object[] arguments) throws Exception
  	{
  		try
  		{
  			if (this.method == null)
  			{
  				if (this.parameterTypes == null)
  					this.parameterTypes = PROXY.toParameterTypes(arguments);
  
  				this.method = PROXY.findMethod(this.targetClass,
  						this.methodName, this.parameterTypes);
  			}
  
  			return this.method.invoke(target, arguments);
  		}
  		catch (IllegalArgumentException e)
  		{
  			throw new IllegalArgumentException(target.getClass().getName()+"."+this.method+"("+Debugger.toString(e)+")");
  		}
  		catch (NoSuchMethodException e)
  		{
  			throw e;
  		}
  		catch (IllegalAccessException e)
  		{
  			throw e;
  		}
  		catch (InvocationTargetException e)
  		{
  			if (e.getCause() instanceof Exception)
  				throw (Exception) e.getCause();
  			else
  				throw e;
  		}
  
  	}
docs: Note that this methods does not support auto boxing of primitive types
  @param arguments the object method input arguments
  @return the return of the method call
  @throws Exception when an unknowns errors occurs