I am saying that there are many different ways you may want to compare/diff - the functionality is better implemented outside of the actual objects to make it possible to use different ways of comparing. Also, the functionality is generic, does not have to become methods on the objects.