code: public void processValueChange(ValueChangeEvent valueChangeEvent) throws AbortProcessingException {
                           
          if (valueChangeEvent == null) {
              throw new NullPointerException();
          }
          FacesContext context = FacesContext.getCurrentInstance();
          ELContext elContext = context.getELContext();
          // PENDING: The corresponding code in MethodExpressionActionListener
          // has an elaborate message capture, logging, and rethrowing block.
          // Why not here?
          try {
              methodExpressionOneArg.invoke(elContext, new Object[] {valueChangeEvent});
          } catch (MethodNotFoundException mnf) {
              if (null != methodExpressionZeroArg) {
  
                  // try to invoke a no-arg version
                  methodExpressionZeroArg.invoke(elContext, new Object[]{});
              }
          } 
      }
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
  ValueChangeEvent} 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 if the argument valueChangeEvent is null.
  @throws AbortProcessingException {@inheritDoc}