public override IEnumerator <KeyValuePair <TKey, TValue> > GetEnumerator()
            {
                using (var enumKeys = _myDictionary.EnumerateKeys()) {
                    while (enumKeys.MoveNext())
                    {
                        var key = enumKeys.Current;
                        IEnumerator <TValue> enumValues;

                        if (_myDictionary.TryEnumerateValuesForKey(key, out enumValues))
                        {
                            using (enumValues) {
                                while (enumValues.MoveNext())
                                {
                                    yield return(new KeyValuePair <TKey, TValue>(key, enumValues.Current));
                                }
                            }
                        }
                    }
                }
            }
            /// <summary>
            /// Enumerate all the values associated with key.
            /// </summary>
            /// <returns>An IEnumerator&lt;TValue&gt; that enumerates all the values associated with key.</returns>
            public override IEnumerator <TValue> GetEnumerator()
            {
                IEnumerator <TValue> values;

                return(_myDictionary.TryEnumerateValuesForKey(_key, out values) ? values : NoValues());
            }