Deep Cloning, Override .Equal(), .GetHashCode()..