If i have a complex object, what is the best practice pattern to write code to compare 2 instances to see if they are the same