src/main/java/ognl/OgnlParser.java
final public void selectFirst() throws ParseException {
                                   /*@bgen(jjtree) SelectFirst */
  ASTSelectFirst jjtn000 = new ASTSelectFirst(JJTSELECTFIRST);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(54);
      jj_consume_token(11);
      expression();
      jj_consume_token(55);
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
      }
    }
  }
final public void selectFirst() throws ParseException {
                                   /*@bgen(jjtree) SelectFirst */
  ASTSelectFirst jjtn000 = new ASTSelectFirst(JJTSELECTFIRST);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(54);
      jj_consume_token(11);
      expression();
      jj_consume_token(55);
    } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
    } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
      }
    }
  }
Apply a boolean expression to all elements of a collection, creating a new collection
containing those elements for the first element for which the expression returned true.