redefined the struct's generics to conform to Hashable and Equatable; provided example of how to override the hashValue and isEqual functions on a sub-class of NSObject