(command.CommandList
  children: [
    (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_Number '$0')}
                          right: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name BASH_SOURCE>
                                bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                              )
                            }
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dirname)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name BASH_SOURCE>
                        bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VOp1_Percent '%'>
                            arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
                          )
                      )
                    }
                  spids: [83]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: {($ Id.VSub_DollarName '$dirname')}
                      right: {($ Id.VSub_Number '$0')}
                    )
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:top_dir)
                      op: assign_op.Equal
                      rhs: {(SQ <'../..'>)}
                      spids: [107]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:top_dir)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name dirname) <'/../..'>}
                      spids: [114]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_z
                      child: {($ Id.VSub_DollarName '$_Dbg_libdir')}
                    )
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_Dbg_libdir)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$top_dir')}
                      spids: [131]
                    )
                  ]
                )
              ]
            )
            (command.ForEach
              iter_name: file
              iter_words: [{<help>} {<alias>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Sentence
                      child: 
                        (C {<source>} 
                          {($ Id.VSub_DollarName '$top_dir') <'/lib/'> (${ Id.VSub_Name file) <.sh>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
            )
          ]
          spids: [61 80]
        )
      ]
    )
    (C {<_Dbg_help_add_sub>} {<set>} {<listsize>} 
      {
        (SQ <'**set listsize** *number-of-lines*\n'> <'\n'> 
          <'Set the number of source lines debugger will list by default.\n'> <'\n'> <'See also:\n'> <'---------\n'> <'\n'> <'**show listsize**\n'>
        )
      }
    )
    (C {<typeset>} {<-xi>} {<Id.Lit_VarLike '_Dbg_set_listsize='> <10>})
    (command.ShFunction
      name: _Dbg_do_set_listsize
      body: 
        (BraceGroup
          children: [
            (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_seteglob'))})
            (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_Number '$1')}
                                  right: {($ Id.VSub_DollarName '$int_pat')}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_set_listsize='> ($ Id.VSub_Number '$1'))})
                  ]
                  spids: [208 222]
                )
              ]
              else_action: [
                (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))})
                (C {<_Dbg_errmsg>} {(DQ <'Integer argument expected; got: '> ($ Id.VSub_Number '$1'))})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))})
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
  ]
)