hashCode and equals overrided