/// <summary> /// Updates the transition group properties for the graph. /// </summary> /// <returns>True if groups are already up to date, False if they were changed</returns> private bool UpdateGroups(TransitionGroupDocNode[] nodeGroups, IdentityPath[] groupPaths, out bool changedGroups, out bool changedGroupIds) { changedGroups = false; changedGroupIds = false; if (ArrayUtil.ReferencesEqual(nodeGroups, _nodeGroups) && _arrayChromInfo != null) return true; changedGroups = true; int lenNew = nodeGroups.SafeLength(); int lenOld = _nodeGroups.SafeLength(); if (lenNew != lenOld) changedGroupIds = true; else { for (int i = 0; i < lenNew; i++) { if (!ReferenceEquals(nodeGroups[i].Id, _nodeGroups[i].Id)) changedGroupIds = true; } } _nodeGroups = nodeGroups; _groupPaths = groupPaths; return false; }