private void read(byte[] in, Locale locale, @Nls String[] names) {
      XmlElement document = XmlDomReader.readXmlAsModel(in);
      XmlElement annotationsNode = document.getChild("annotations");
      Iterator<XmlElement> annotations = (annotationsNode != null ? annotationsNode : document).children("annotation").iterator();
      while (annotations.hasNext()) {
        XmlElement node = annotations.next();
        @NonNls String emoji = node.getAttributeValue("cp");
        Integer index = emojiData.indicesMap.get(emoji);
        if (index == null) {
          continue;
        }

        @NonNls String value = Objects.requireNonNull(node.content);
        if (node.getAttributeValue("type") == null) {
          for (String keyword : value.split("\\|")) {
            indexTree.add(keyword.strip().toLowerCase(), index);
          }
        }
        else if (names != null) {
          @Nls String name = value.substring(0, 1).toUpperCase(locale) + value.substring(1);
          names[index] = name;
        }
      }
    }
private void read(byte[] in, Locale locale, @Nls String[] names)