private int collectToIndex(BuildData data) {
      int[] childrenLinks = new int[myChildren.size()];
      for (int i = 0; i < childrenLinks.length; i++) childrenLinks[i] = myChildren.get(i).collectToIndex(data);
      int charsFrom = data.myChars.length();
      data.myChars.append(myPrefix);
      int index = data.myDataPointer;
      data.ensureDataCapacity(4 + childrenLinks.length + myValues.size());
      data.write(charsFrom).write(data.myChars.length()).write(childrenLinks.length);
      System.arraycopy(childrenLinks, 0, data.myData, data.myDataPointer, childrenLinks.length);
      data.myDataPointer += childrenLinks.length;
      data.write(myValues.size());
      for (int i : myValues) {
        if (i > data.myMaxEmojiId) data.myMaxEmojiId = i;
        data.write(i);
      }
      return index;
    }
private int collectToIndex(BuildData data)