private static List<String> getChildPropertyNamesFor(Element parent, String parentName) {
        // No need for locking: this is called only with a read-lock already acquired.
        List<String> result = new ArrayList<>();
        for (Element child : parent.elements()) {
            String childName = parentName + (parentName.isEmpty() ? "" : ".") + child.getName();
            if (!result.contains(childName)) {
                result.add(childName);
                result.addAll(getChildPropertyNamesFor(child, childName));
            }
        }
        return result;
    }
Returns a list of names for all properties found in the XML file.

@return Names for all properties in the file
xmppserver/src/main/java/org/jivesoftware/util/XMLProperties.java