src/main/java/ognl/OgnlParser.java
final public void logicalAndExpression() throws ParseException {
    inclusiveOrExpression();
    label_3:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 7:
      case 8:
        ;
        break;
      default:
        jj_la1[5] = jj_gen;
        break label_3;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 7:
        jj_consume_token(7);
        break;
      case 8:
        jj_consume_token(8);
        break;
      default:
        jj_la1[6] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                                              ASTAnd jjtn001 = new ASTAnd(JJTAND);
                                              boolean jjtc001 = true;
                                              jjtree.openNodeScope(jjtn001);
      try {
        inclusiveOrExpression();
      } catch (Throwable jjte001) {
                                              if (jjtc001) {
                                                jjtree.clearNodeScope(jjtn001);
                                                jjtc001 = false;
                                              } else {
                                                jjtree.popNode();
                                              }
                                              if (jjte001 instanceof RuntimeException) {
                                                {if (true) throw (RuntimeException)jjte001;}
                                              }
                                              if (jjte001 instanceof ParseException) {
                                                {if (true) throw (ParseException)jjte001;}
                                              }
                                              {if (true) throw (Error)jjte001;}
      } finally {
                                              if (jjtc001) {
                                                jjtree.closeNodeScope(jjtn001,  2);
                                              }
      }
    }
  }
final public void logicalAndExpression() throws ParseException {
    inclusiveOrExpression();
    label_3:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 7:
      case 8:
        ;
        break;
      default:
        jj_la1[5] = jj_gen;
        break label_3;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 7:
        jj_consume_token(7);
        break;
      case 8:
        jj_consume_token(8);
        break;
      default:
        jj_la1[6] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                                              ASTAnd jjtn001 = new ASTAnd(JJTAND);
                                              boolean jjtc001 = true;
                                              jjtree.openNodeScope(jjtn001);
      try {
        inclusiveOrExpression();
      } catch (Throwable jjte001) {
                                              if (jjtc001) {
                                                jjtree.clearNodeScope(jjtn001);
                                                jjtc001 = false;
                                              } else {
                                                jjtree.popNode();
                                              }
                                              if (jjte001 instanceof RuntimeException) {
                                                {if (true) throw (RuntimeException)jjte001;}
                                              }
                                              if (jjte001 instanceof ParseException) {
                                                {if (true) throw (ParseException)jjte001;}
                                              }
                                              {if (true) throw (Error)jjte001;}
      } finally {
                                              if (jjtc001) {
                                                jjtree.closeNodeScope(jjtn001,  2);
                                              }
      }
    }
  }
final public void logicalAndExpression ( ) throws ParseException { inclusiveOrExpression ( ) ; label_3 : while ( true ) { switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 7 : case 8 : ; break ; default : jj_la1 [ 5 ] = jj_gen ; break label_3 ; } switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 7 : jj_consume_token ( 7 ) ; break ; case 8 : jj_consume_token ( 8 ) ; break ; default : jj_la1 [ 6 ] = jj_gen ; jj_consume_token ( - 1 ) ; throw new ParseException ( ) ; } ASTAnd jjtn001 = new ASTAnd ( JJTAND ) ; boolean jjtc001 = true ; jjtree . openNodeScope ( jjtn001 ) ; try { inclusiveOrExpression ( ) ; } catch ( Throwable jjte001 ) { if ( jjtc001 ) { jjtree . clearNodeScope ( jjtn001 ) ; jjtc001 = false ; } else { jjtree . popNode ( ) ; } if ( jjte001 instanceof RuntimeException ) { { if ( true ) throw ( RuntimeException ) jjte001 ; } } if ( jjte001 instanceof ParseException ) { { if ( true ) throw ( ParseException ) jjte001 ; } } { if ( true ) throw ( Error ) jjte001 ; } } finally { if ( jjtc001 ) { jjtree . closeNodeScope ( jjtn001 , 2 ) ; } } } }
logical and (&&)  (level 10)
logical and ( && ) ( level 10 )