In no way do I advocate ignoring the careful implementation of equals() and hashCode()
if you want to use the instances of your legacy classes as the keys to the hash-based caches, that's a different matter -- both equals() and hashCode() must be overriden correctly
why not simply this:
this implementation works for our specific need, but as a generally-applicable solution, there are problems. those problems are resolved by not including calls to super in hashCode/equals, and by using: if (object != null && object.getClass() == getClass) versus: if (object instanceof <ThisClass>
the former change (not using super) was pointed out by rereading josh bloch's advice -- assuming i read it right. the latter comes from reading http://www.geocities.com/technofundo/tech/java/equalhash.html.
our code generation utility worked for our specific case, and the code generation functionality in IDEs/plugins works for most general cases.