code: @Override
      public Object invoke(ELContext context, Object[] params)
              throws PropertyNotFoundException, MethodNotFoundException,
              ELException {
          EvaluationContext ctx = new EvaluationContext(context, this.fnMapper,
                  this.varMapper);
          ctx.notifyBeforeEvaluation(getExpressionString());
          Object result = this.getNode().invoke(ctx, this.paramTypes, params);
          ctx.notifyAfterEvaluation(getExpressionString());
          return result;
      }
docs: Evaluates the expression relative to the provided context, invokes the
  method that was found using the supplied parameters, and returns the
  result of the method invocation.
  
  @param context
  The context of this evaluation.
  @param params
  The parameters to pass to the method, or <code>null</code>
  if no parameters.
  @return the result of the method invocation (<code>null</code> if the
  method has a <code>void</code> return type).
  @throws NullPointerException
  if context is <code>null</code> or the base object is
  <code>null</code> on the last resolution.
  @throws PropertyNotFoundException
  if one of the property resolutions failed because a specified
  variable or property does not exist or is not readable.
  @throws MethodNotFoundException
  if no suitable method can be found.
  @throws ELException
  if an exception was thrown while performing property or
  variable resolution. The thrown exception must be included as
  the cause property of this exception, if available. If the
  exception thrown is an <code>InvocationTargetException</code>,
  extract its <code>cause</code> and pass it to the
  <code>ELException</code> constructor.
  @see javax.el.MethodExpression#invoke(javax.el.ELContext,
  java.lang.Object[])