public virtual TreeNode this[string key] { get { if (string.IsNullOrEmpty(key)) return null; int index = this.IndexOfKey(key); if (IsValidIndex(index)) return this[index]; return null; } }