@unutbu you are definitely correct that this is getting big - would you mind putting this on hold for a little bit and opening up a PR to fix Index's equals() and add an NDFrame's equals() method?  Converting these changes into smaller chunks would make it easier to understand and test these changes.  I believe you're already 90% of the way there.