code: @Override
  	public Result getResult() throws Exception {
  		Result returnResult = result;
  
  		// If we've chained to other Actions, we need to find the last result
  		while (returnResult instanceof ActionChainResult) {
  			ActionProxy aProxy = ((ActionChainResult) returnResult).getProxy();
  
  			if (aProxy != null) {
  				Result proxyResult = aProxy.getInvocation().getResult();
  
  				if ((proxyResult != null) && (aProxy.getExecuteResult())) {
  					returnResult = proxyResult;
  				} else {
  					break;
  				}
  			} else {
  				break;
  			}
  		}
  
  		return returnResult;
  	}
docs: If the DefaultActionInvocation has been executed before and the Result is
  an instance of ActionChainResult, this method will walk down the chain of
  ActionChainResults until it finds a non-chain result, which will be
  returned. If the DefaultActionInvocation's result has not been executed
  before, the Result instance will be created and populated with the result
  params.
  
  @return a Result instance
  @throws Exception