code: final public Selector LikePredicate() throws ParseException {
                               Selector id; Token pat; Token esc=null; boolean neg=false;
      id = FieldRef();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NOT:
        jj_consume_token(NOT);
                                neg = true;
        break;
      default:
        jj_la1[17] = jj_gen;
        ;
      }
      jj_consume_token(LIKE);
      pat = jj_consume_token(STRING_LITERAL);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case ESCAPE:
        jj_consume_token(ESCAPE);
        esc = jj_consume_token(STRING_LITERAL);
        break;
      default:
        jj_la1[18] = jj_gen;
        ;
      }
      Selector ans = ParseUtil.convertLike(id, pat.image, (esc==null) ? null : esc.image);
      if (ans == null) generateParseException();
      if (neg) {if (true) return new OperatorImpl(Operator.NOT, ans);}
      else {if (true) return ans;}
      throw new Error("Missing return statement in function");
    }
docs: ( <ESCAPE> <STRING_LITERAL> )?