final public UpdateCommand Update() throws ParseException {
        String tableName;
        List<UpdateCommand.UpdateDescriptor > updateDescriptors
                = new ArrayList<UpdateCommand.UpdateDescriptor>();
        Exp condition = null;

        UpdateCommand.UpdateDescriptor updateDescriptor;
    jj_consume_token(KW_UPDATE);
    tableName = Identifier();
    jj_consume_token(KW_SET);
    updateDescriptor = AttributeAssg();
                                                              updateDescriptors.add(updateDescriptor);
    label_10:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 51:
        ;
        break;
      default:
        jj_la1[19] = jj_gen;
        break label_10;
      }
      jj_consume_token(51);
      updateDescriptor = AttributeAssg();
                                                       updateDescriptors.add(updateDescriptor);
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case KW_WHERE:
      jj_consume_token(KW_WHERE);
      condition = Expression();
      break;
    default:
      jj_la1[20] = jj_gen;
      ;
    }
          {if (true) return new UpdateCommand(token, tableName, updateDescriptors, condition);}
    throw new Error("Missing return statement in function");
  }