private static ISet<Production> CloneProductions(IEnumerable<Production> productions) {
var result = new HashSet<Production>();
foreach (var production in productions) {
// var productions = grammar.Productions;
result.Add(production.DeepClone());
}
return result;
}