**Use case**
Some program left garbage in terminal.

**Describe the solution you'd like**
Subset of what `reset` command does.
fuzzer.fuzzMain(ast_to_process);
                }
                auto base_after_fuzz = fuzz_base->formatForErrorMessage();
                // Check that the source AST didn't change after fuzzing. This
                // helps debug AST cloning errors, where the cloned AST doesn't
                // clone all its children, and erroneously points to some source
                // child elements.
                if (base_e_after_fuzz)
                
                    prin
                    fmt::print(stderr,
                        "Base before fuzz: }\n"
                        "Base after fuzz: }\n",
                        base_before_fuzz, base_after_fuzz);
                    fmt::print(stderr, "Dump before fuzz:\n}\n", dump_before_fuzz.str());
                    fmt::print(stderr, "Dump of cloned AST:\n}\n", dump_of_cloned_ast.str());
                    fmt::print(stderr, "Dump after fuzz:\n");
                    WriteBufferFromOStream cerr_buf(std::cerr, 4096);
                    fuzz_base->dumpTree(cerr_buf);
                    cerr_buf.next();
                    fmt::print(stderr, "IAST::clone() is broken for some AST node. This is a bug. The original AST ('dump before fuzz') and its cloned copy ('dump of cloned AST') refer to the same nodes, which must never happen. This means that their parent node doesn't implement clone() correctly.");
                    exit(1);
                }
                auto fuzzed_text = ast_to_process->formatForErrorMessage();
                if (fuzz_step > 0 && fuzzed_text == base_before_fuzz)
                
                    fmt::print(stderr, "Got boring AST\n");
                    continue;