                 open.insert(idx)
                 locked.insert(idx + adjust)
             }
+            _populatedMap = _map
             return _map
         }
     }

            }
            else {
                if itemShifts[aFrom] == nil {
                    itemShifts[aFrom] = ShiftSet(count: self.numberOfItems(in: aFrom), remove: from._item)
                }
                else {
                    itemShifts[aFrom]?.remove(at: from._item)
                }
                if itemShifts[to._section] == nil {
                    itemShifts[to._section] = ShiftSet(count: self.numberOfItems(in: to._section), insert: to._item)
                }
                else {
                    itemShifts[to._section]?.insert(at: to._item)

            open.insert(value)
        }
        
        
        private var _populatedMap: [Int:Int]?
        mutating func populateMap(count: Int) -> [Int:Int] {
            
            var cursor: Int = 0
            var adjust : Int = 0
            
            if let m = _populatedMap { return m }
            
            log.debug(storage)
            for idx in 0..<max(storage.count, count) {
                if _map[idx] != nil {
                    continue
