There are uses of an object identity stored in the object: for instance when I wanted to collect statistics on the number of times each object is moved by the generational-mostly-copying collector of CMM, I had to add an identity field. This was fairly easy since I only had to add a field to class CmmObject from which all collected objects are derived. -- Beppe