public class TaggedWeak: Hashable { public static func == (lhs: TaggedWeak, rhs: TaggedWeak) -> Bool { lhs.hash == rhs.hash } public func hash(into hasher: inout Hasher) { hasher.combine(hash) } public weak var value: T? let hash: Hash public init(hash: Hash, _ value: T?) { self.value = value self.hash = hash } }