(command.CommandList
  children: [
    (C {<.>} {($ Id.VSub_DollarName '$_Dbg_main')})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DParen
          child: 
            (arith_expr.Binary
              op_id: Id.Arith_Great
              left: <Id.Lit_ArithVarLike OPTLIND>
              right: {<Id.Lit_Digits 0>}
            )
        )
        (C {<shift>} 
          {
            (DQ 
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Minus
                    left: <Id.Lit_ArithVarLike OPTLIND>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            )
          }
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: {($ Id.VSub_Pound '$#')}
                              right: {<Id.Lit_Digits 0>}
                            )
                        )
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName '$_Dbg_EXECUTION_STRING')}
                            )
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ (${ Id.VSub_Name _Dbg_pname) 
                    <': need to give a script to debug or use the -c option.'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [113 136]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_Dbg_script_file)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$1'))}
          spids: [159]
        )
      ]
    )
    (C {<shift>})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_Number '$1')}
              right: {(SQ <-->)}
            )
        )
        (C {<shift>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalNot
                              child: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_d
                                  child: {($ Id.VSub_DollarName '$_Dbg_tmpdir')}
                                )
                            )
                        )
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalNot
                              child: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_w
                                  child: {($ Id.VSub_DollarName '$_Dbg_tmpdir')}
                                )
                            )
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ (${ Id.VSub_Name _Dbg_pname) <': cannot write to temp directory '> 
                    ($ Id.VSub_DollarName '$_Dbg_tmpdir') <.>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ (${ Id.VSub_Name _Dbg_pname) <': Use -T try directory location.'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [184 210]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_Dbg_script)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [251]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {($ Id.VSub_DollarName '$_Dbg_EXECUTION_STRING')}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_script_file)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<_Dbg_tempname>} {<cmd>})
                      )
                    }
                  spids: [270]
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$_Dbg_EXECUTION_STRING'))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_script_file')}
                )
              ]
              do_fork: T
            )
          ]
          spids: [255 267]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalNot
                          child: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_r
                              child: {(DQ ($ Id.VSub_DollarName '$_Dbg_script_file'))}
                            )
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ (${ Id.VSub_Name _Dbg_pname) <': cannot read program to debug: '> 
                    (${ Id.VSub_Name _Dbg_script_file) <.>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [290 306]
        )
      ]
    )
    (C {<typeset>} {<-r>} 
      {<Id.Lit_VarLike '_Dbg_Dbg_script_file='> 
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          child: (C {<_Dbg_expand_filename>} {($ Id.VSub_DollarName '$_Dbg_script_file')})
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (command.DParen child:<Id.Lit_ArithVarLike _Dbg_set_linetrace>)
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_step_ignore=-1'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_QUIT_ON_QUIT)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [368]
                )
              ]
            )
          ]
          spids: [345 354]
        )
      ]
      else_action: [(C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_step_ignore=3'>)})]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{<enable>} {<-a>} {<set0>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<set0>} {(DQ ($ Id.VSub_DollarName '$_Dbg_script_file'))})]
          spids: [396 409]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DParen child:<Id.Lit_ArithVarLike _Dbg_set_read_completion>)
        (C {<_Dbg_complete_level_0_init>})
      ]
    )
    (C {<_Dbg_init_default_traps>})
  ]
)