/// <summary> /// Adds the specified key and associated value. /// </summary> /// <param name="key">The key.</param> /// <param name="value">The value.</param> /// <exception cref="ArgumentException">An item with the same key has already been added</exception> public void AddNew(TKey key, TValue value) { var needle = PrivateGetNeedle(key); try { _wrapped.AddNew(needle, input => !input.IsAlive, value); } catch (ArgumentException) { _reservoir.DonateNeedle(needle); throw; } }