A framework for doing object comparison in c#