class DisjointPathPair implements Path<V, E> {

    @Override
    public int hashCode() {
        // Note: DisjointPathPair with primary and secondary swapped
        // must result in same hashCode
        return hasBackup() ? primary.hashCode() + secondary.hashCode() :
                Objects.hash(primary);
    }

    public  DisjointPathPair(Path<V, E> primary, Path<V, E> secondary);

}