static Set<Object> getPropertiesKeys(final PropertyReferenceBase propertyReference) {
    final Set<Object> variants = new ObjectOpenCustomHashSet<>(new Hash.Strategy<>() {
      @Override
      public int hashCode(@Nullable Object object) {
        if (object instanceof IProperty) {
          String key = ((IProperty)object).getKey();
          return key == null ? 0 : key.hashCode();
        }
        else {
          return 0;
        }
      }

      @Override
      public boolean equals(@Nullable Object o1, @Nullable Object o2) {
        if (o1 == o2) {
          return true;
        }
        return o1 instanceof IProperty && o2 instanceof IProperty &&
               Objects.equals(((IProperty)o1).getKey(), ((IProperty)o2).getKey());
      }
    });
    List<PropertiesFile> propertiesFileList = propertyReference.getPropertiesFiles();
    if (propertiesFileList == null) {
      PropertiesReferenceManager
        .getInstance(propertyReference.getElement().getProject()).processAllPropertiesFiles((baseName, propertiesFile) -> {
          addVariantsFromFile(propertyReference, propertiesFile, variants);
          return true;
        });
    }
    else {
      for (PropertiesFile propFile : propertiesFileList) {
        addVariantsFromFile(propertyReference, propFile, variants);
      }
    }
    return variants;
  }
static Set<Object> getPropertiesKeys(final PropertyReferenceBase propertyReference)