src/main/java/ognl/OgnlParser.java
final public void equalityExpression() throws ParseException {
    relationalExpression();
    label_7:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 15:
      case 16:
      case 17:
      case 18:
        ;
        break;
      default:
        jj_la1[13] = jj_gen;
        break label_7;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 15:
      case 16:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 15:
          jj_consume_token(15);
          break;
        case 16:
          jj_consume_token(16);
          break;
        default:
          jj_la1[14] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                        ASTEq jjtn001 = new ASTEq(JJTEQ);
                        boolean jjtc001 = true;
                        jjtree.openNodeScope(jjtn001);
        try {
          relationalExpression();
        } 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);
                        }
        }
        break;
      case 17:
      case 18:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 17:
          jj_consume_token(17);
          break;
        case 18:
          jj_consume_token(18);
          break;
        default:
          jj_la1[15] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                         ASTNotEq jjtn002 = new ASTNotEq(JJTNOTEQ);
                         boolean jjtc002 = true;
                         jjtree.openNodeScope(jjtn002);
        try {
          relationalExpression();
        } catch (Throwable jjte002) {
                         if (jjtc002) {
                           jjtree.clearNodeScope(jjtn002);
                           jjtc002 = false;
                         } else {
                           jjtree.popNode();
                         }
                         if (jjte002 instanceof RuntimeException) {
                           {if (true) throw (RuntimeException)jjte002;}
                         }
                         if (jjte002 instanceof ParseException) {
                           {if (true) throw (ParseException)jjte002;}
                         }
                         {if (true) throw (Error)jjte002;}
        } finally {
                         if (jjtc002) {
                           jjtree.closeNodeScope(jjtn002,  2);
                         }
        }
        break;
      default:
        jj_la1[16] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }
final public void equalityExpression() throws ParseException {
    relationalExpression();
    label_7:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 15:
      case 16:
      case 17:
      case 18:
        ;
        break;
      default:
        jj_la1[13] = jj_gen;
        break label_7;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 15:
      case 16:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 15:
          jj_consume_token(15);
          break;
        case 16:
          jj_consume_token(16);
          break;
        default:
          jj_la1[14] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                        ASTEq jjtn001 = new ASTEq(JJTEQ);
                        boolean jjtc001 = true;
                        jjtree.openNodeScope(jjtn001);
        try {
          relationalExpression();
        } 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);
                        }
        }
        break;
      case 17:
      case 18:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 17:
          jj_consume_token(17);
          break;
        case 18:
          jj_consume_token(18);
          break;
        default:
          jj_la1[15] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
                         ASTNotEq jjtn002 = new ASTNotEq(JJTNOTEQ);
                         boolean jjtc002 = true;
                         jjtree.openNodeScope(jjtn002);
        try {
          relationalExpression();
        } catch (Throwable jjte002) {
                         if (jjtc002) {
                           jjtree.clearNodeScope(jjtn002);
                           jjtc002 = false;
                         } else {
                           jjtree.popNode();
                         }
                         if (jjte002 instanceof RuntimeException) {
                           {if (true) throw (RuntimeException)jjte002;}
                         }
                         if (jjte002 instanceof ParseException) {
                           {if (true) throw (ParseException)jjte002;}
                         }
                         {if (true) throw (Error)jjte002;}
        } finally {
                         if (jjtc002) {
                           jjtree.closeNodeScope(jjtn002,  2);
                         }
        }
        break;
      default:
        jj_la1[16] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }
equality/inequality (==/!=) (level 6)