                 }
                 timerQueue.async(execute: recursiveCheck)
                 
-                _ = try storage.cs_finalizeStorageAndWait(soureModelHint: sourceModel)
                 _ = try withExtendedLifetime(NSPersistentStoreCoordinator(managedObjectModel: destinationModel)) { (coordinator: NSPersistentStoreCoordinator) in
                     
                     try coordinator.addPersistentStoreSynchronously(

                    
                    fakeProgress = 1
                }
                _ = try? storage.cs_finalizeStorageAndWait(soureModelHint: destinationModel)
                progress.completedUnitCount = progress.totalUnitCount
                return
            }
            catch {

                // try manual migration
            }
        }


    
    private func startMigrationForStorage<T: LocalStorage>(_ storage: T, sourceModel: NSManagedObjectModel, destinationModel: NSManagedObjectModel, mappingModel: NSMappingModel, migrationType: MigrationType, progress: Progress) throws {
        
        do {
            
            try storage.cs_finalizeStorageAndWait(soureModelHint: sourceModel)
        }
        catch {
            
            throw CoreStoreError(error)
        }
        
        let fileURL = storage.fileURL
        if case .lightweight = migrationType {

