     
     public func revertAll(_ preparations: [Preparation.Type]) throws {
         try prepareMetadata()
-        let preparations: ReversedCollection<[Preparation.Type]> = preparations.reversed()
+        let preparations = preparations.reversed()
         for preparation in preparations {
             if let migration = try migration(for: preparation) {
                 try preparation.revert(self)

    public func revertBatch(_ preparations: [Preparation.Type]) throws {
        try prepareMetadata()
        let batch = try latestBatch()
        let preparations: ReversedCollection<[Preparation.Type]> = preparations.reversed()
        for preparation in preparations {
            if let migration = try migration(for: preparation), migration.batch == batch {
                try preparation.revert(self)

        try prepareMetadata()
        let batch = try latestBatch()
        var toBeReverted: [Preparation.Type] = []
        let preparations = preparations.reversed()
        for preparation in preparations {
            if let migration = try migration(for: preparation), migration.batch == batch {
                toBeReverted.append(preparation)
