// $ANTLR start "orexpression"
  // com/pmerienne/eventmonitoring/shared/parser/Criteria.g:75:1: orexpression : logicalexpression (
  // OR logicalexpression )* ;
  public final CriteriaParser.orexpression_return orexpression() throws RecognitionException {
    CriteriaParser.orexpression_return retval = new CriteriaParser.orexpression_return();
    retval.start = input.LT(1);

    Object root_0 = null;

    Token OR6 = null;
    CriteriaParser.logicalexpression_return logicalexpression5 = null;

    CriteriaParser.logicalexpression_return logicalexpression7 = null;

    Object OR6_tree = null;

    try {
      // com/pmerienne/eventmonitoring/shared/parser/Criteria.g:75:14: ( logicalexpression ( OR
      // logicalexpression )* )
      // com/pmerienne/eventmonitoring/shared/parser/Criteria.g:75:16: logicalexpression ( OR
      // logicalexpression )*
      {
        root_0 = (Object) adaptor.nil();

        pushFollow(FOLLOW_logicalexpression_in_orexpression406);
        logicalexpression5 = logicalexpression();

        state._fsp--;

        adaptor.addChild(root_0, logicalexpression5.getTree());
        // com/pmerienne/eventmonitoring/shared/parser/Criteria.g:75:34: ( OR logicalexpression )*
        loop2:
        do {
          int alt2 = 2;
          switch (input.LA(1)) {
            case OR:
              {
                alt2 = 1;
              }
              break;
          }

          switch (alt2) {
            case 1:
              // com/pmerienne/eventmonitoring/shared/parser/Criteria.g:75:35: OR logicalexpression
              {
                OR6 = (Token) match(input, OR, FOLLOW_OR_in_orexpression409);
                OR6_tree = (Object) adaptor.create(OR6);
                root_0 = (Object) adaptor.becomeRoot(OR6_tree, root_0);

                pushFollow(FOLLOW_logicalexpression_in_orexpression412);
                logicalexpression7 = logicalexpression();

                state._fsp--;

                adaptor.addChild(root_0, logicalexpression7.getTree());
              }
              break;

            default:
              break loop2;
          }
        } while (true);
      }

      retval.stop = input.LT(-1);

      retval.tree = (Object) adaptor.rulePostProcessing(root_0);
      adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

    } catch (RecognitionException re) {
      reportError(re);
      recover(input, re);
      retval.tree = (Object) adaptor.errorNode(input, retval.start, input.LT(-1), re);

    } finally {
    }
    return retval;
  }
  // $ANTLR start "andexpression"
  // com/pmerienne/eventmonitoring/shared/parser/Criteria.g:72:1: andexpression : orexpression ( AND
  // orexpression )* ;
  public final CriteriaParser.andexpression_return andexpression() throws RecognitionException {
    CriteriaParser.andexpression_return retval = new CriteriaParser.andexpression_return();
    retval.start = input.LT(1);

    Object root_0 = null;

    Token AND3 = null;
    CriteriaParser.orexpression_return orexpression2 = null;

    CriteriaParser.orexpression_return orexpression4 = null;

    Object AND3_tree = null;

    try {
      // com/pmerienne/eventmonitoring/shared/parser/Criteria.g:72:15: ( orexpression ( AND
      // orexpression )* )
      // com/pmerienne/eventmonitoring/shared/parser/Criteria.g:72:17: orexpression ( AND
      // orexpression )*
      {
        root_0 = (Object) adaptor.nil();

        pushFollow(FOLLOW_orexpression_in_andexpression389);
        orexpression2 = orexpression();

        state._fsp--;

        adaptor.addChild(root_0, orexpression2.getTree());
        // com/pmerienne/eventmonitoring/shared/parser/Criteria.g:72:30: ( AND orexpression )*
        loop1:
        do {
          int alt1 = 2;
          switch (input.LA(1)) {
            case AND:
              {
                alt1 = 1;
              }
              break;
          }

          switch (alt1) {
            case 1:
              // com/pmerienne/eventmonitoring/shared/parser/Criteria.g:72:31: AND orexpression
              {
                AND3 = (Token) match(input, AND, FOLLOW_AND_in_andexpression392);
                AND3_tree = (Object) adaptor.create(AND3);
                root_0 = (Object) adaptor.becomeRoot(AND3_tree, root_0);

                pushFollow(FOLLOW_orexpression_in_andexpression395);
                orexpression4 = orexpression();

                state._fsp--;

                adaptor.addChild(root_0, orexpression4.getTree());
              }
              break;

            default:
              break loop1;
          }
        } while (true);
      }

      retval.stop = input.LT(-1);

      retval.tree = (Object) adaptor.rulePostProcessing(root_0);
      adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

    } catch (RecognitionException re) {
      reportError(re);
      recover(input, re);
      retval.tree = (Object) adaptor.errorNode(input, retval.start, input.LT(-1), re);

    } finally {
    }
    return retval;
  }