(CommandList
  children: [
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {($ VSub_Number '$0')}
                      right: 
                        {
                          (BracedVarSub
                            token: <VSub_Name BASH_SOURCE>
                            bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                            spids: [63 68]
                          )
                        }
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dirname)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name BASH_SOURCE>
                        bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                        suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
                        spids: [78 86]
                      )
                    }
                  spids: [77]
                )
              ]
              spids: [77]
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {($ VSub_Name '$dirname')}
                      right: {($ VSub_Number '$0')}
                    )
                )
                (AndOr
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:top_dir)
                          op: Equal
                          rhs: {(SQ <..>)}
                          spids: [101]
                        )
                      ]
                      spids: [101]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:top_dir)
                          op: Equal
                          rhs: {(${ VSub_Name dirname) (/..)}
                          spids: [108]
                        )
                      ]
                      spids: [108]
                    )
                  ]
                  op_id: Op_DPipe
                )
              ]
              op_id: Op_DAmp
            )
            (ForEach
              iter_name: lib_file
              iter_words: [{(help)} {(alias)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Sentence
                      child: 
                        (C {(source)} {($ VSub_Name '$top_dir') (/lib/) (${ VSub_Name lib_file) (.sh)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [127 139]
                )
              spids: [120 125]
            )
          ]
          spids: [16777215 74]
        )
      ]
      spids: [16777215 141]
    )
    (C {(_Dbg_help_add)} {(complete)} 
      {
        (SQ <'**complete** *prefix-str*...\n'> <'\n'> <'\n'> 
          <'Show command completion strings for *prefix-str*\n'>
        )
      }
    )
    (FuncDef
      name: _Dbg_do_complete
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Typeset
                  flags: [-a]
                  pairs: [(assign_pair lhs:(LhsName name:args) op:Equal spids:[168])]
                  spids: [164]
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:args)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{($ VSub_At '$@')}])}
                  spids: [171]
                )
              ]
              spids: [171]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_matches)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [177]
                )
              ]
              spids: [177]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: 
                                (ArithWord
                                  w: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name args>
                                        prefix_op: VSub_Pound
                                        bracket_op: (WholeArray op_id:Lit_At)
                                        spids: [186 192]
                                      )
                                    }
                                )
                              right: (ArithWord w:{(Lit_Digits 2)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(_Dbg_subcmd_complete)} 
                      {
                        (BracedVarSub
                          token: <VSub_Name args>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                          spids: [208 213]
                        )
                      } 
                      {
                        (BracedVarSub
                          token: <VSub_Name args>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                          spids: [215 220]
                        )
                      }
                    )
                  ]
                  spids: [16777215 203]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: 
                                (ArithWord
                                  w: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name args>
                                        prefix_op: VSub_Pound
                                        bracket_op: (WholeArray op_id:Lit_At)
                                        spids: [227 233]
                                      )
                                    }
                                )
                              right: (ArithWord w:{(Lit_Digits 1)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(eval)} 
                      {
                        (DQ ('builtin compgen -W ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                          (BracedVarSub
                            token: <VSub_Name _Dbg_debugger_commands>
                            prefix_op: VSub_Bang
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [256 262]
                          ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' -- ') 
                          (BracedVarSub
                            token: <VSub_Name args>
                            bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                            spids: [265 270]
                          )
                        )
                      }
                    )
                  ]
                  spids: [223 244]
                )
              ]
              spids: [16777215 274]
            )
            (Assignment
              keyword: Assign_Typeset
              flags: [-i]
              pairs: [(assign_pair lhs:(LhsName name:i) op:Equal spids:[281])]
              spids: [277]
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_Less
                  left: (ArithVarRef name:i)
                  right: 
                    (ArithWord
                      w: 
                        {
                          (BracedVarSub
                            token: <VSub_Name _Dbg_matches>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [297 303]
                          )
                        }
                    )
                )
              update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i))
              body: 
                (DoGroup
                  children: [
                    (C {(_Dbg_msg)} 
                      {
                        (BracedVarSub
                          token: <VSub_Name _Dbg_matches>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')}))
                          spids: [320 325]
                        )
                      }
                    )
                  ]
                  spids: [315 328]
                )
            )
          ]
          spids: [161]
        )
      spids: [157 160]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {($ VSub_Number '$0')}
                      right: 
                        {
                          (BracedVarSub
                            token: <VSub_Name BASH_SOURCE>
                            bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                            spids: [344 349]
                          )
                        }
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(source)} {(${ VSub_Name top_dir) (/lib/msg.sh)})
            (ForEach
              iter_name: _Dbg_file
              iter_words: [
                (BracedWordTree
                  parts: [
                    (${ VSub_Name top_dir)
                    (/command/)
                    (BracedAltPart words:[{(c) (Lit_Other '*')} {(help)}])
                    (.sh)
                  ]
                )
              ]
              do_arg_iter: False
              body: (DoGroup children:[(C {(source)} {($ VSub_Name '$_Dbg_file')})] spids:[386 394])
              spids: [371 384]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_args)
                  op: Equal
                  rhs: {(SQ <complete>)}
                  spids: [398]
                )
              ]
              spids: [398]
            )
            (C {(_Dbg_do_help)} {(complete)})
            (C {(_Dbg_do_complete)} {(c)})
          ]
          spids: [16777215 355]
        )
      ]
      spids: [16777215 413]
    )
  ]
)