protocol Destinationable: Hashable { associatedtype D: Hashable var destination: D { get } } protocol Graph { associatedtype Edge: Destinationable s