         
         let components = self.components
         var segments = ArraySlice(components.flatMap { $0.segments })
-        let list = Shape.Component.CacheArray(cache: components.map { component in component.cache.lck.synchronized { component.cache._values } })
+        let cache = Shape.Component.CacheArray(components.map { component in component.cache.lck.synchronized { component.cache._values } })
         
         self.components.removeAll(keepingCapacity: true)
         
         for (index, var component) in components.enumerated() {
             component.segments = segments.popFirst(component.count)
-            component.cache = Shape.Component.Cache(index: index, list: list)
+            component.cache = Shape.Component.Cache(index: index, list: cache)
             self.components.append(component)
         }
     }

    @usableFromInline
    var _values: Shape.Component.CacheArray.Element {
        get {
            return list.cache[index]
        }
        nonmutating set {
            list.cache[index] = newValue
        }
    }
    

    class CacheArray {
        
        let lck = SDLock()
        var storage: [Element]
        
        @usableFromInline
        init(_ storage: [Element]) {
            self.storage = storage
        }
    }
}
