protected override Key <TWeakKey1, TWeakKey2, TStrongKey> FromStackKeyToStorageKey(Stacktype <TWeakKey1, TWeakKey2, TStrongKey> externalKey)
 {
     return(new StorageKey <TWeakKey1, TWeakKey2, TStrongKey>().Set(externalKey, _comparer));
 }
 protected override bool FromInternalKeyToStackKey(Key <TWeakKey1, TWeakKey2, TStrongKey> internalKey, out Stacktype <TWeakKey1, TWeakKey2, TStrongKey> externalKey)
 {
     return(internalKey.Get(out externalKey));
 }
 public bool TryUpdate(TWeakKey1 weakKey1, TWeakKey2 weakKey2, TStrongKey strongKey, TValue newValue, TValue comparisonValue)
 {
     return(_internalDictionary.TryUpdate(Stacktype.Create(weakKey1, weakKey2, strongKey), newValue, comparisonValue));
 }
 public bool TryRemove(TWeakKey1 weakKey1, TWeakKey2 weakKey2, TStrongKey strongKey, out TValue value)
 {
     return(_internalDictionary.TryRemove(Stacktype.Create(weakKey1, weakKey2, strongKey), out value));
 }
 public bool TryAdd(TWeakKey1 weakKey1, TWeakKey2 weakKey2, TStrongKey strongKey, TValue value)
 {
     return(_internalDictionary.TryAdd(Stacktype.Create(weakKey1, weakKey2, strongKey), value));
 }
 public TValue this[TWeakKey1 weakKey1, TWeakKey2 weakKey2, TStrongKey strongKey]
 {
     get { return(_internalDictionary.GetItem(Stacktype.Create(weakKey1, weakKey2, strongKey))); }
     set { _internalDictionary.SetItem(Stacktype.Create(weakKey1, weakKey2, strongKey), value); }
 }
 public bool ContainsKey(TWeakKey1 weakKey1, TWeakKey2 weakKey2, TStrongKey strongKey)
 {
     return(_internalDictionary.ContainsKey(Stacktype.Create(weakKey1, weakKey2, strongKey)));
 }