final public CreateTableCommand.ForeignKeyDescriptor ForeignKeyDecl() throws ParseException {
        String refTableName;
        List<String> localAttrNames = new ArrayList<String>();
        List<String> refAttrNames = new ArrayList<String>();

        String name;
    jj_consume_token(KW_FOREIGN);
    jj_consume_token(KW_KEY);
    jj_consume_token(52);
    name = Identifier();
                                localAttrNames.add(name);
    label_5:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 51:
        ;
        break;
      default:
        jj_la1[11] = jj_gen;
        break label_5;
      }
      jj_consume_token(51);
      name = Identifier();
                                    localAttrNames.add(name);
    }
    jj_consume_token(53);
    jj_consume_token(KW_REFERENCES);
    refTableName = Identifier();
    jj_consume_token(52);
    name = Identifier();
                                refAttrNames.add(name);
    label_6:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 51:
        ;
        break;
      default:
        jj_la1[12] = jj_gen;
        break label_6;
      }
      jj_consume_token(51);
      name = Identifier();
                                    refAttrNames.add(name);
    }
    jj_consume_token(53);
          {if (true) return new CreateTableCommand.ForeignKeyDescriptor(
                refTableName, localAttrNames, refAttrNames);}
    throw new Error("Missing return statement in function");
  }