                     return false
                 }
             }
-            // TODO: test
             if let destinationColumns = destinationColumns {
+                // TODO: test
                 let destinationColumns = Set(destinationColumns.lazy.map { $0.lowercased() })
                 let foreignKeyColumns = Set(foreignKey.mapping.lazy.map { $0.destination.lowercased() })
                 if destinationColumns != foreignKeyColumns {

        if let originColumns = originColumns {
            let destinationColumns = try db.primaryKey(destinationTable).columns
            if (originColumns.count == destinationColumns.count) {
                // TODO: test
                let mapping = zip(originColumns, destinationColumns).map {
                    (origin: $0, destination: $1)
                }

        if let foreignKey = foreignKeys.first {
            if foreignKeys.count == 1 {
                // Non-ambiguous
                return foreignKey
            } else {
                // Ambiguous: can't choose
