code: final public Selector Predicate() throws ParseException {
                           Selector ans;
      if (jj_2_1(2147483647)) {
        ans = ComparisonPredicate();
      } else if (jj_2_2(2147483647)) {
        ans = NullPredicate();
      } else if (jj_2_3(2147483647)) {
        ans = BetweenPredicate();
      } else if (jj_2_4(2147483647)) {
        ans = LikePredicate();
      } else if (jj_2_5(2147483647)) {
        ans = JMSSetPredicate();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 7:
        case 8:
        case 11:
        case TRUE:
        case FALSE:
        case IDENTIFIER:
        case QUOTED_IDENTIFIER:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case STRING_LITERAL:
          ans = Expression();
          break;
        default:
          jj_la1[3] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      {if (true) return ans;}
      throw new Error("Missing return statement in function");
    }
docs: | GeneralSetPredicate