private static PListValue readDict(@NotNull XmlElement dictElement) throws IOException {
    Plist dict = new Plist();
    List<XmlElement> children = dictElement.children;
    int i = 0;
    for (; i < children.size(); i++) {
      XmlElement keyElement = children.get(i);
      if ("key".equals(keyElement.name)) {
        String attributeKey = keyElement.content;
        i++;
        PListValue value = attributeKey != null ? readValue(attributeKey, children.get(i)) : null;
        if (value != null) {
          dict.setEntry(attributeKey, value);
        }
      }
    }

    return value(dict, PlistValueType.DICT);
  }
private static PListValue readDict(@NotNull XmlElement dictElement)