public virtual void RemoveChild(TValue value) { var node = ChildrenList.FirstOrDefault(x => value.Equals(x.Value)); if (node == null) { throw new InvalidOperationException(string.Format("Could not find child '{0}'.", value)); } ChildrenList.Remove(node); }