extension Container {

    var shoppingsTableViewModel: ShoppingsTableViewModel {
        return ShoppingsTableViewModel(assembly: Assembly(container: self))
    }

    private struct Assembly: ShoppingsTableViewModelAssembly {

        let container: Container

        // MARK: ShoppingsTableViewModelAssembly

        func shoppingsTableRowViewModel(shopping: Shopping) -> ShoppingsTableRowViewModel {
            return container.shoppingsTableRowViewModel(shopping: shopping)
        }

    }

}

extension Container {

    var shoppingsTableViewModel: ShoppingsTableViewModel {
        return ShoppingsTableViewModel(assembly: Assembly(container: self))
    }

    private struct Assembly: ShoppingsTableViewModelAssembly {

        let container: Container

        // MARK: ShoppingsTableViewModelAssembly

        func shoppingsTableRowViewModel(shopping: Shopping) -> ShoppingsTableRowViewModel {
            return self.shoppingsTableRowViewModel(shopping: shopping)
        }

    }

}

--- 
+++ 
@@ -11,7 +11,7 @@
         // MARK: ShoppingsTableViewModelAssembly
 
         func shoppingsTableRowViewModel(shopping: Shopping) -> ShoppingsTableRowViewModel {
-            return self.shoppingsTableRowViewModel(shopping: shopping)
+            return container.shoppingsTableRowViewModel(shopping: shopping)
         }
 
     }
Fix crash in Container extension
