internal static Menu Union(Menu first, Menu second) { Menu result = null; if (first == null) { if (second != null) { result = second.Clone(); } } else { result = first.Clone(); if (second != null) { foreach (var item in second.Children) { if (!result.ContainsChild(item.Id)) { result.AppendChild(item); } } } } return(result); }
internal static Menu Subtract(Menu first, Menu second) { if (first == null) { return(null); } if (second == null) { return(first.Clone()); } var result = first.CloneMain(); foreach (var item in first.Children) { if (!second.ContainsChild(item.Id)) { result.AppendChild(item.Clone()); } } return(result); }