protected bool UpdateIfNeeded() { var newList = Rebuild(_items.Count + 1); if (_items.ReplaceIfDifferBy(newList, this)) { SaveListToCache(_items); SyncSelected(true); return(true); } var c = newList.Count; for (var i = 0; i < c; i++) { var n = newList[i]; var o = _items[i]; o.ItemsCount = n.ItemsCount; o.IsNew = n.IsNew; } return(false); }