public function iPutABreakpoint()
    {
        fwrite(STDOUT, "\033[s \033[93m[Breakpoint] Press \033[1;93m[RETURN]\033[0;93m to continue, or 'q' to quit...\033[0m");
        do {
            $line = trim(fgets(STDIN, 1024));
            //Note: this assumes ASCII encoding.  Should probably be revamped to
            //handle other character sets.
            $charCode = ord($line);
            switch ($charCode) {
                case 0: //CR
                case 121: //y
                case 89: //Y
                    break 2;
                // case 78: //N
                // case 110: //n
                case 113: //q
                case 81: //Q
                    throw new \Exception("Exiting test intentionally.");
                default:
                    fwrite(STDOUT, sprintf("\nInvalid entry '%s'.  Please enter 'y', 'q', or the enter key.\n", $line));
                    break;
            }
        } while (true);
        fwrite(STDOUT, "\033[u");
    }