     - returns: Key that can be used to remove element from bag.
     */
     mutating func insert(_ element: T) -> BagKey {
+        let key = _nextKey
+
         _nextKey = _nextKey &+ 1
-
-#if DEBUG
-        _nextKey = _nextKey % 20
-#endif
-        
-        if _nextKey == 0 {
-            _uniqueIdentity = Identity()
-        }
-
-        let key = BagKey(uniqueIdentity: _uniqueIdentity, key: _nextKey)
 
         if _key0 == nil {
             _key0 = key

    */
    typealias KeyType = BagKey
    
    fileprivate typealias ScopeUniqueTokenType = Int
    
    typealias Entry = (key: BagKey, value: T)
 
    fileprivate var _uniqueIdentity: Identity?
    fileprivate var _nextKey: ScopeUniqueTokenType = 0

    // data


let arrayDictionaryMaxSize = 30

/**
Unique identifier for object added to `Bag`.
 
It's underlying type is UInt64. If we assume there in an idealized CPU that works at 4GHz,
 it would take ~150 years of continuous running time for it to overflow.
*/
public typealias BagKey = UInt64

/**
Data structure that represents a bag of elements typed `T`.
