public boolean equalsIgnoreCase(final Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        final PropertyPath that = (PropertyPath) o;
        if (this.leafPart == null && that.leafPart == null) {
            return areParentPartsEqualIgnoringCase(this.parentParts, that.parentParts);
        } else if (this.leafPart == null && that.leafPart != null) {
            return false;
        } else if (this.leafPart != null && that.leafPart == null) {
            return false;
        } else {
            return this.leafPart.equalsIgnoreCase(that.leafPart)
                   && areParentPartsEqualIgnoringCase(this.parentParts, that.parentParts);
        }
    }
@return The parent property name from a property path, i.e. "node" from "stroom.node.name".
Throws a {@link RuntimeException} if the path is empty or there is no parent.
stroom-util-shared/src/main/java/stroom/util/shared/PropertyPath.java