internal bool Add(SettingBase setting) { if (setting == null) { throw new ArgumentNullException(nameof(setting)); } if (Origin != null && Origin.IsMachineWide) { throw new InvalidOperationException(Resources.CannotUpdateMachineWide); } if (Origin != null && Origin.IsReadOnly) { throw new InvalidOperationException(Resources.CannotUpdateReadOnlyConfig); } if (!_mutableChildren.ContainsKey(setting) && !setting.IsEmpty()) { _mutableChildren.Add(setting, setting); if (Origin != null) { setting.SetOrigin(Origin); if (Node != null) { setting.SetNode(setting.AsXNode()); XElementUtility.AddIndented(Node as XElement, setting.Node); Origin.IsDirty = true; } } setting.Parent = this; return(true); } return(false); }