protected virtual int GetHash(Object key) { if (_keycomparer != null) return _keycomparer.GetHashCode(key); return key.GetHashCode(); }