public RunDescriptorsBuilder For(params RunDescriptor[] descriptorsToAdd) { var toAdd = descriptorsToAdd.Where(r => r != null).ToList(); if (!toAdd.Any()) { emptyPermutationFound = true; } if (!descriptors.Any()) { descriptors = toAdd; return(this); } var result = new List <RunDescriptor>(); foreach (var existingDescriptor in descriptors) { foreach (var descriptorToAdd in toAdd) { var nd = new RunDescriptor(existingDescriptor); nd.Merge(descriptorToAdd); result.Add(nd); } } descriptors = result; return(this); }