private void ensurePropertiesLoaded() {
    while (myFileModificationStamp != myFile.getModificationStamp() || myPropertiesMap == null) {
      myFileModificationStamp = myFile.getModificationStamp();
      MostlySingularMultiMap<String, IProperty> propertiesMap = new MostlySingularMultiMap<>();
      XmlTag rootTag = myFile.getRootTag();
      final List<IProperty> propertiesOrder = new ArrayList<>();
      if (rootTag != null) {
        XmlTag[] entries = rootTag.findSubTags(ENTRY_TAG_NAME);
        for (XmlTag entry : entries) {
          XmlProperty property = new XmlProperty(entry, this);
          propertiesOrder.add(property);
          final String key = property.getKey();
          if (key != null) {
            propertiesMap.add(key, property);
          }
        }
      }
      myAlphaSorted = PropertiesImplUtil.isAlphaSorted(propertiesOrder);
      myProperties = propertiesOrder;
      myPropertiesMap = propertiesMap;
    }
  }
private void ensurePropertiesLoaded()