code: public void processAction(ActionEvent actionEvent) throws AbortProcessingException {
  
          if (actionEvent == null) {
              throw new NullPointerException();
          }
          
          FacesContext context = FacesContext.getCurrentInstance();
          ELContext elContext = context.getELContext();
  
          try {
              try {
                  methodExpressionOneArg.invoke(elContext, new Object[] {actionEvent});
              } catch (MethodNotFoundException mnfe) {
                  methodExpressionZeroArg.invoke(elContext, new Object[]{});
              }
          } catch (ELException ee) {
              if (ee.getCause() instanceof AbortProcessingException) {
                  throw (AbortProcessingException) ee.getCause();
              } else {
                  throw (ELException) ee;
              }
          }
      }
docs: <p><span class="changed_modified_2_0
  changed_modified_2_2">Call</span> through to the {@link
  MethodExpression} passed in our constructor.  <span
  class="changed_added_2_0">First, try to invoke the
  <code>MethodExpression</code> passed to the constructor of this
  instance, passing the argument {@link ActionEvent} as the
  argument.  If a {@link MethodNotFoundException} is thrown, call
  to the zero argument <code>MethodExpression</code> derived from
  the <code>MethodExpression</code> passed to the constructor of
  this instance.  <span class="changed_deleted_2_2"><del>If that
  fails for any reason, throw an {@link AbortProcessingException},
  including the cause of the failure.</del></span></span></p>
  
  @throws NullPointerException {@inheritDoc}
  @throws AbortProcessingException {@inheritDoc}