         return container?.viewContext
     }
     
-    public override func setup() {
+    public override func setupStack() {
         container = getPersistentStoreContainer()
+    }
+    
+    public override func cleanupStack() {
+        container = nil
     }
     
     var accidentError: Error?

        return mainContext
    }
    
    public override func setup() {
        coordinator = getPersistentStoreCoordinator()
        mainContext = getMainContext()
    }
    
    var accidentError: Error?

    func checkStack() -> Bool
    func viewContext() -> NSManagedObjectContext?
    func save(block:@escaping ((NSManagedObjectContext?) -> Void), completion: ((Bool, Error?) -> Void)?)
    func setupStack()
    func cleanupStack()
}

internal protocol DatabaseContainerWithEncryptionProtocol {
