private bool InternalRemove(TKey key)
        {
            if (!_isMessageType)
            {
                return(_internal.Remove(key));
            }

            TValue value;

            if (_internal.TryGetValue(key, out value))
            {
                ClearParent(value);
                _internal.Remove(key);
                return(true);
            }

            return(false);
        }