@SuppressWarnings("ConstantValue") // For clarity
    public boolean equalsIgnoreCase(final Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        final DocPath that = (DocPath) 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 part name from a doc path, i.e. "Farm" from "Animals/Farm/Horse".
Throws a {@link RuntimeException} if the path is empty or there is no parent.
stroom-util-shared/src/main/java/stroom/util/shared/DocPath.java