Clarify/update comment.
Fix unlikely corner case: a.hashCode-b.hashCode isn't consistent.
Sort by object ID as last resort.
Factor out Fields.compareObjectID()
Add short-cut to comparator
Logging: This should not happen.
Merge remote branch 'origin/next' into next