protected override void ClearCore(bool disposing)
                {
                    _lock.EnterWriteLock();
                    try
                    {
                        var node = _lruList.First;
                        while (node != null)
                        {
                            if (node.Key.TryGetTarget(out T key))
                            {
                                _cache.Remove(key);
                            }

                            node = node.Next;
                        }

                        _count = 0;

                        LruLinkedList.Clear(ref _lruList);
#if DEBUG
                        _accessCount   = 0;
                        _evictionCount = 0;
#endif
                    }
                    finally
                    {
                        _lock.ExitWriteLock();
                    }
                }
                protected override void ClearCore(bool disposing)
                {
                    _cache.Clear();
                    LruLinkedList.Clear(ref _lruList);
#if DEBUG
                    _accessCount     = 0;
                    _evictionCount   = 0;
                    _invocationCount = 0;
                    _lastEvicted     = null;
#endif
                }