static final public MInsert InsertStatement() throws ParseException {
  MInsert ins;
  String s;
  Vector v;
  MQuery q;
    jj_consume_token(K_INSERT);
    jj_consume_token(K_INTO);
    s = TableReference();
                                         ins = new MInsert(s);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 88:
      jj_consume_token(88);
      s = TableColumn();
                            v = new Vector(); v.addElement(s);
      label_4:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 89:
          ;
          break;
        default:
          jj_la1[22] = jj_gen;
          break label_4;
        }
        jj_consume_token(89);
        s = TableColumn();
                             v.addElement(s);
      }
      jj_consume_token(90);
                                                         ins.addColumns(v);
      break;
    default:
      jj_la1[23] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_VALUES:
      jj_consume_token(K_VALUES);
      jj_consume_token(88);
      v = SQLExpressionList();
      jj_consume_token(90);
       MExpression e = new MExpression(",");
       e.setOperands(v); ins.addValueSpec(e);
      break;
    case K_SELECT:
      q = SelectStatement();
                             ins.addValueSpec(q);
      break;
    default:
      jj_la1[24] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    jj_consume_token(91);
         {if (true) return ins;}
    throw new Error("Missing return statement in function");
  }