I have a idea.
I think that the core problem is in structore of `\Doctrine\DBAL\Schema\TableDiff::$renamedIndexes` array. It contains `\Doctrine\DBAL\Schema\Index` objects, and keys of array are old index names. I think array should have structure like this:
```
->renamedIndexes = [
    [
        'oldIndex' => object(Doctrine\DBAL\Schema\Index),
        'newIndex' => object(Doctrine\DBAL\Schema\Index),
    ]
]
```
And we should extend `Doctrine\DBAL\Schema\Index` class by adding reference to `\Doctrine\DBAL\Schema\Table`, containing this index. Having two objects in `getRenameIndexSql()` method with references to tables whould give us a full data for generating valid sql.

Or, maybe, we should have in `\Doctrine\DBAL\Schema\TableDiff` class, instaed of properties `\Doctrine\DBAL\Schema\TableDiff::$addedIndexes`, `\Doctrine\DBAL\Schema\TableDiff::$changedIndexes`, `\Doctrine\DBAL\Schema\TableDiff::$removedIndexes`, `\Doctrine\DBAL\Schema\TableDiff::$renamedIndexes` two arrays: `$oldIndexes`, `$newIndexes`, and `AbstractPlatform` will respect for generating sql for migrate from `oldIndexes` to `newIndexes`, guessing which of index should be added, shich should be recreated, and which should be renamed.