ForeignKeySnapshotGenerator.snapshotObject() always sets ForeignKey.backingIndex to a non-null value.
MissingForeignKeyChangeGenerator.fixMissing() always marks that index as already being processed.
The result is that the particular (handmade) index is getting lost if the database is not automatically creating an index for a foreign key, e.g. MSSQL.
Workaround: Create an own SnapshotGenerator which sets ForeignKey.backingIndex to null.