/// <summary>
 /// Re-bases the unique identifiers assigned to a set of ProjectInvocationRule instances.
 /// </summary>
 /// <param name="rules">An array of ProjectInvocationRules whose identifiers are to be rationalised.</param>
 public void RationaliseIds(ProjectInvocationRule[] rules)
 {
     IList<int> list = GetImmutableIds(rules);
     var rulesToUpdate = rules.Where(r => !list.Contains(r.Id)).ToArray();
     foreach (ProjectInvocationRule rule in rulesToUpdate) {
         int id = Helper.CreateId(list);
         rule.Id = id;
         list.Add(id);
     }
 }