                 return nil
             }
 
-            count -= 1
+            defer {
+                count -= 1
+                i += 1
+            }
+
             if i >= self._storage.count {
                 i -= self._storage.count
             }
 
-            let element = self._storage[i]
-            i += 1
-            return element
+            return self._storage[i]
         }
     }
 }

            return nil
        }

        let value = dequeueElementOnly()
        
        let downsizeLimit = _storage.count / (_resizeFactor * _resizeFactor)
        if _count < downsizeLimit && downsizeLimit >= _initialCapacity {
            resizeTo(_storage.count / _resizeFactor)
        }
        
        return value
    }
    
    /**

        precondition(count > 0)
        
        let index = dequeueIndex

        defer {
            _storage[index] = nil
            _count -= 1
        }

        return _storage[index]!
    }

    /**
