@Override
    public int hashCode() {
        int hashCode = this.hashCode;
        if (hashCode == 0 && !hashIsZero) {
            hashCode = Objects.hash(parentParts, leafPart);
            if (hashCode == 0) {
                hashIsZero = true;
            } else {
                this.hashCode = hashCode;
            }
        }
        return hashCode;
    }
@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