Editor class parent frob_class object editor_class var root name 'editor_class eval .initialize(); . method new arg text; if (type(text) != 'list) throw(~type, "Text is not a list."); return <this(), text>; . method handle_editor_command arg text, str; if (str == "done") return ['done, text]; else if (str == "abort") return ['abort]; else return ['not_done, <this(), text>]; .