/// <summary>
 /// Constructs a <see cref="KeySequence{TKey}"/> from the collection.
 /// </summary>
 /// <param name="key">
 /// The key collection.
 /// </param>
 public KeySequence(KeySequence <TKey> key)
 {
     _keys = key._keys;
 }
 public int GetHashCode(KeySequence <string> obj)
 {
     return(obj.GetHashCode());
 }
 /// <summary>
 /// Gets the element that has the specified key.
 /// </summary>
 public TValue this[KeySequence <TKey> key] => _dictionary[key];
 /// <summary>
 /// Constructs a <see cref="KeySequence{TKey}"/> from the collection.
 /// </summary>
 /// <param name="a">
 /// The key collection.
 /// </param>
 /// <param name="b">
 /// A second key collection to combine.
 /// </param>
 public KeySequence(KeySequence <TKey> a, KeySequence <TKey> b)
 {
     _keys = new TKey[a.Count + b.Count];
     Array.Copy(a._keys ?? EmptyArray, 0, _keys, 0, a.Count);
     Array.Copy(b._keys ?? EmptyArray, 0, _keys, a.Count, b.Count);
 }
 /// <summary>
 /// Gets or sets the element with the specified key.
 /// </summary>
 /// <param name="key">
 /// The key of the element to get or set.
 /// </param>
 /// <returns>
 /// The element with the specified key.
 /// </returns>
 TValue IDictionary <KeySequence <TKey>, TValue> .this[KeySequence <TKey> key]