Iterator<String> () { 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(); }