(command.CommandList
  children: [
    (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_set_different='> <0>})
    (C {<_Dbg_help_add>} {<step>} 
      {
        (DQ <'step [COUNT]\n'> <'\n'> 
          <'Single step an statement. This is sometimes called \'step into\'.\n'> <'\n'> <'\n'> <'If COUNT is given, stepping occurs that many times before\n'> 
          <'stopping. Otherwise COUNT is one. COUNT an be an arithmetic\n'> <'expression.\n'> <'\n'> <'In contrast to '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
          <next> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
          <', functions and source\'d files are stepped\n'> <'into. See also '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <skip> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <.>
        )
      }
    )
    (C {<_Dbg_help_add>} {(SQ <'step+'>)} 
      {
        (DQ <'step+ -- Single step a statement ensuring a different line after the step.\n'> <'\n'> 
          <'In contrast to '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <step> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <', we ensure that the file and line position is\n'> 
          <'different from the last one just stopped at.\n'> <'\n'> <'See also '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <step-> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' and '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'set force'> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <.>
        )
      }
    )
    (C {<_Dbg_help_add>} {(SQ <step->)} 
      {
        (DQ <'step- -- Single step a statement without the '> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'step force\' setting.\n'> <'\n'> 
          <'Set step force may have been set on. step- ensures we turn that off for\n'> <'this command.\n'> <'\n'> <'See also '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
          <step> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' and '> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'set force'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <.>
        )
      }
    )
    (command.ShFunction
      name: _Dbg_do_step
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<_Dbg_not_running>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<3>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_last_cmd)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_cmd'))}
                  spids: [187]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_last_next_step_cmd)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_cmd'))}
                  spids: [193]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_last_next_step_args)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_At '$@'))}
                  spids: [199]
                )
              ]
            )
            (C {<typeset>} 
              {<Id.Lit_VarLike 'count='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<1>})
                )
              }
            )
            (C {<typeset>} {<suffix>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:suffix)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name _Dbg_last_next_step_cmd>
                        suffix_op: 
                          (suffix_op.Slice
                            begin: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Minus
                                left: 
                                  {
                                    (braced_var_sub
                                      token: <Id.VSub_Name _Dbg_last_step_next_cmd>
                                      prefix_op: (Id.VSub_Pound)
                                    )
                                  }
                                right: {<Id.Lit_Digits 1>}
                              )
                            length: {<Id.Lit_Digits 1>}
                          )
                      )
                    }
                  spids: [221]
                )
              ]
            )
            (command.Case
              to_match: {(DQ <suffix>)}
              arms: [
                (case_arm
                  pat_list: [{(SQ <'+'>)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_step_force)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [252]
                        )
                      ]
                    )
                  ]
                  spids: [246 250 255 -1]
                )
                (case_arm
                  pat_list: [{(SQ <->)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_step_force)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [264]
                        )
                      ]
                    )
                  ]
                  spids: [258 262 267 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_step_force)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$_Dbg_set_different')}
                          spids: [274]
                        )
                      ]
                    )
                  ]
                  spids: [270 272 277 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName '$count')}
                                  right: 
                                    {<Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '*'>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_step_ignore)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name count>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_ColonHyphen ':-'>
                                    arg_word: {<1>}
                                  )
                              )
                            }
                          spids: [304]
                        )
                      ]
                    )
                  ]
                  spids: [284 301]
                )
              ]
              else_action: [
                (C {<_Dbg_errmsg>} 
                  {
                    (DQ <'Argument ('> ($ Id.VSub_DollarName '$count') 
                      <') should be a number or nothing.'>
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_Dbg_step_ignore)
                      op: assign_op.Equal
                      rhs: {<-1>}
                      spids: [324]
                    )
                  ]
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<2>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_old_set_opts)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_old_set_opts') <' -o functrace'>)}
                  spids: [336]
                )
              ]
            )
            (C {<_Dbg_write_journal>} 
              {(DQ <'_Dbg_step_ignore='> ($ Id.VSub_DollarName '$_Dbg_step_ignore'))}
            )
            (C {<_Dbg_write_journal>} 
              {(DQ <'_Dbg_step_force='> ($ Id.VSub_DollarName '$_Dbg_step_force'))}
            )
            (C {<_Dbg_write_journal>} 
              {(DQ <'_Dbg_old_set_opts=\''> ($ Id.VSub_DollarName '$_Dbg_old_set_opts') <'\''>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_inside_skip)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [369]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_continue_rc)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [373]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (C {<_Dbg_alias_add>} {(SQ <s>)} {(SQ <step>)})
    (C {<_Dbg_alias_add>} {(SQ <'s+'>)} {(SQ <'step+'>)})
    (C {<_Dbg_alias_add>} {(SQ <s->)} {(SQ <step->)})
  ]
)