private static void RemoveSelfLoops(ISet<Production> productions) {
var toDelete = new List<Production>();
foreach (var production in productions) {
if (production.IsSelfLoop) {
toDelete.Add(production);
}
}
foreach (var item in toDelete) {
productions.Remove(item);
}
}