public void SetValue(TKey[] keyStack, TValue value) { DictionaryEntry <TKey, TValue> dict = _dict; for (int i = 0; i < keyStack.Length; i++) { TKey key = keyStack[i]; if (dict.Children.ContainsKey(key)) { dict = dict.Children[key]; } else { var child = new DictionaryEntry <TKey, TValue>(); dict.Children.Add(key, child); dict = child; } if (i == keyStack.Length - 1) { dict.SetValue(value); } } }