(command.CommandList children: [ (C {<_Dbg_help_add>} {<untrace>} { (SQ <'untrace FUNCTION\n'> <'\n'> <'Untrace previously-traced function FUNCTION. See also "trace".'> ) } ) (command.ShFunction name: _Dbg_do_untrace body: (BraceGroup children: [ (C {<typeset>} {<Id.Lit_VarLike 'fn='> ($ Id.VSub_Number '$1')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$fn')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} {(DQ <'untrace: missing or invalid function name.'>)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] spids: [86 98] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_Dbg_is_function>} {(DQ ($ Id.VSub_DollarName '$fn'))} {($ Id.VSub_DollarName '$_Dbg_set_debug')} ) (BraceGroup children: [ (C {<_Dbg_errmsg>} { (DQ <'untrace: function '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) ($ Id.VSub_DollarName '$fn') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' is not a function.'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<3>} ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_Dbg_is_function>} {(DQ <old_> ($ Id.VSub_DollarName '$fn'))}) (BraceGroup children: [ (C {<_Dbg_errmsg>} { (DQ <'untrace: old function old_'> ($ Id.VSub_DollarName '$fn') <' not seen - nothing done.'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<4>} ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cmd) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<declare>} {<-f>} {<-->} {(DQ <old_> ($ Id.VSub_DollarName '$fn'))} ) ) } spids: [179] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName '$cmd')} right: {(SQ <'^function old_'>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cmd) op: assign_op.Equal rhs: { (DQ <'function '> (braced_var_sub token: <Id.VSub_Name cmd> suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 13>}) ) ) } spids: [218] ) ] ) ] spids: [199 215] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cmd) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name cmd> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<old_>} ) ) } spids: [232] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: <Id.Lit_ArithVarLike _Dbg_debug_debugger> ) (C {<echo>} {($ Id.VSub_DollarName '$cmd')}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<eval>} {(DQ ($ Id.VSub_DollarName '$cmd'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<6>} ) ] ) (C {<_Dbg_msg>} { (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$fn') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' restored from '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) <old_> (${ Id.VSub_Name fn) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <.> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [177 195] ) ] else_action: [ (C {<_Dbg_errmsg>} { (DQ <'Can\'t find function definition for '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) ($ Id.VSub_DollarName '$fn') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <.> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<5>} ) ] ) ] ) ) ] )