public HierarchicalRecord(LineReader lineReader) {
   super(lineReader);
   int version = Integer.parseInt(lineReader.getNextLine());
   isRoot = Boolean.parseBoolean(lineReader.getNextLine());
   int numParentIds = Integer.parseInt(lineReader.getNextLine());
   parentIds = new int[numParentIds];
   for (int i = 0; i < numParentIds; ++i)
     parentIds[i] = Integer.parseInt(lineReader.getNextLine());
   int numChildIds = Integer.parseInt(lineReader.getNextLine());
   childIds = new int[numChildIds];
   for (int i = 0; i < numChildIds; ++i) childIds[i] = Integer.parseInt(lineReader.getNextLine());
 }
  public DynamicPlaylistRecord(LineReader lineReader) {
    super(lineReader);
    int version = Integer.parseInt(lineReader.getNextLine());

    int numIds = Integer.parseInt(lineReader.getNextLine());
    for (int i = 0; i < numIds; ++i)
      artistIds.put(Integer.parseInt(lineReader.getNextLine()), null);
    numIds = Integer.parseInt(lineReader.getNextLine());
    for (int i = 0; i < numIds; ++i) labelIds.put(Integer.parseInt(lineReader.getNextLine()), null);
    numIds = Integer.parseInt(lineReader.getNextLine());
    for (int i = 0; i < numIds; ++i)
      releaseIds.put(Integer.parseInt(lineReader.getNextLine()), null);
    numIds = Integer.parseInt(lineReader.getNextLine());
    for (int i = 0; i < numIds; ++i) songIds.put(Integer.parseInt(lineReader.getNextLine()), null);
    numIds = Integer.parseInt(lineReader.getNextLine());
    for (int i = 0; i < numIds; ++i)
      excludeArtistIds.put(Integer.parseInt(lineReader.getNextLine()), null);
    numIds = Integer.parseInt(lineReader.getNextLine());
    for (int i = 0; i < numIds; ++i)
      excludeLabelIds.put(Integer.parseInt(lineReader.getNextLine()), null);
    numIds = Integer.parseInt(lineReader.getNextLine());
    for (int i = 0; i < numIds; ++i)
      excludeReleaseIds.put(Integer.parseInt(lineReader.getNextLine()), null);
    numIds = Integer.parseInt(lineReader.getNextLine());
    for (int i = 0; i < numIds; ++i)
      excludeSongIds.put(Integer.parseInt(lineReader.getNextLine()), null);

    if (version >= 2) {
      int numParams = Integer.parseInt(lineReader.getNextLine());
      if (numParams > 0) {
        artistSearchParameters = new ArtistSearchParameters[numParams];
        for (int i = 0; i < numParams; ++i)
          artistSearchParameters[i] = new ArtistSearchParameters(lineReader);
      }
      numParams = Integer.parseInt(lineReader.getNextLine());
      if (numParams > 0) {
        labelSearchParameters = new LabelSearchParameters[numParams];
        for (int i = 0; i < numParams; ++i)
          labelSearchParameters[i] = new LabelSearchParameters(lineReader);
      }
      numParams = Integer.parseInt(lineReader.getNextLine());
      if (numParams > 0) {
        releaseSearchParameters = new ReleaseSearchParameters[numParams];
        for (int i = 0; i < numParams; ++i)
          releaseSearchParameters[i] = new ReleaseSearchParameters(lineReader);
      }
      numParams = Integer.parseInt(lineReader.getNextLine());
      if (numParams > 0) {
        songSearchParameters = new SongSearchParameters[numParams];
        for (int i = 0; i < numParams; ++i)
          songSearchParameters[i] = new SongSearchParameters(lineReader);
      }
    }
  }
 public VideoLink(LineReader lineReader) {
   super(lineReader);
   int version = Integer.parseInt(lineReader.getNextLine());
   thumbnailUrl = lineReader.getNextLine();
   imageFilename = lineReader.getNextLine();
 }
 public TagLabelModelManager(LineReader lineReader) {
   super(lineReader);
   int version = Integer.parseInt(lineReader.getNextLine());
 }