Equals and Hashcode Implementation Considerations https://foojay.io/today/equals-and-hashcode-implementation-considerations/