@Override
  @NotNull
  public final Iterator<String> getNamesIterator() {
    final List<GenericAttributeValue<String>> attribs = getPropertyDefiningAttributes();
    final List<String> result = new ArrayList<>(attribs.size());
    for (GenericAttributeValue<String> attribValue : attribs) {
      final String name = attribValue.getStringValue();
      if (name != null && !name.isEmpty()) {
        result.add(name);
      }
    }
    result.addAll(getImplicitPropertyNames());
    return result.iterator();
  }
@Override
  @NotNull
  public final Iterator<String> getNamesIterator()