src/main/java/ognl/OgnlParser.java
final public void andExpression() throws ParseException {
    equalityExpression();
    label_6:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 13:
      case 14:
        ;
        break;
      default:
        jj_la1[11] = jj_gen;
        break label_6;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 13:
        jj_consume_token(13);
        break;
      case 14:
        jj_consume_token(14);
        break;
      default:
        jj_la1[12] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                                           ASTBitAnd jjtn001 = new ASTBitAnd(JJTBITAND);
                                           boolean jjtc001 = true;
                                           jjtree.openNodeScope(jjtn001);
      try {
        equalityExpression();
      } 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 andExpression() throws ParseException {
    equalityExpression();
    label_6:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 13:
      case 14:
        ;
        break;
      default:
        jj_la1[11] = jj_gen;
        break label_6;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 13:
        jj_consume_token(13);
        break;
      case 14:
        jj_consume_token(14);
        break;
      default:
        jj_la1[12] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
                                           ASTBitAnd jjtn001 = new ASTBitAnd(JJTBITAND);
                                           boolean jjtc001 = true;
                                           jjtree.openNodeScope(jjtn001);
      try {
        equalityExpression();
      } 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 andExpression ( ) throws ParseException { equalityExpression ( ) ; label_6 : while ( true ) { switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 13 : case 14 : ; break ; default : jj_la1 [ 11 ] = jj_gen ; break label_6 ; } switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case 13 : jj_consume_token ( 13 ) ; break ; case 14 : jj_consume_token ( 14 ) ; break ; default : jj_la1 [ 12 ] = jj_gen ; jj_consume_token ( - 1 ) ; throw new ParseException ( ) ; } ASTBitAnd jjtn001 = new ASTBitAnd ( JJTBITAND ) ; boolean jjtc001 = true ; jjtree . openNodeScope ( jjtn001 ) ; try { equalityExpression ( ) ; } 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 ) ; } } } }
bitwise or non-short-circuiting and (&)  (level 7)
bitwise or non - short - circuiting and ( & ) ( level 7 )