hashCode and .equals (auto-generated)