internal static Stmt DoStep(Func<Stmt, Stmt> fnStep, Stmt stmt, string name, bool verbose) {
var s1 = fnStep(stmt);
if (s1 != stmt) {
Print(s1, name, verbose);
var dupStmts = VisitorFindDuplicateStmts.Find(s1);
if (dupStmts.Any()) {
Console.WriteLine("*** ERROR *** {0} DUPLICATE STMT(S) ***", dupStmts.Count());
foreach (var dup in dupStmts) {
Console.WriteLine();
Console.WriteLine(ShowVisitor.V(dup));
}
throw new InvalidOperationException("Duplicate stmt(s) found");
}
}
return s1;
}