(command.CommandList
  children: [
    (C {(typeset)} {(-r)} 
      {(Lit_VarLike '_Dbg_info_cmds=') 
        (SQ 
          <
'args breakpoints display files functions line program signals source stack variables warranty'
          >
        )
      }
    )
    (command.ShFunction
      name: _Dbg_info_help
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')})
                              right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(typeset)} {(-a)} {(list)})
                    (C {(_Dbg_section)} {(SQ <'List of info subcommands:'>)})
                    (command.ForEach
                      iter_name: thing
                      iter_words: [{($ VSub_DollarName '$_Dbg_info_cmds')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [(C {(_Dbg_info_help)} {($ VSub_DollarName '$thing')} {(1)})]
                        )
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (C {(typeset)} {(Lit_VarLike 'subcmd=') (DQ ($ VSub_Number '$1'))})
            (C {(typeset)} {(Lit_VarLike 'label=') (DQ ($ VSub_Number '$2'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_n
                              child: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: <VSub_Name _Dbg_command_help_info>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: 
                                            (arith_expr.ArithWord
                                              w: {($ VSub_DollarName '$subcmd')}
                                            )
                                        )
                                    )
                                  )
                                }
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: BoolUnary_z
                                      child: {($ VSub_DollarName '$label')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_Dbg_msg_rst)} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <VSub_Name _Dbg_command_help_info>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$subcmd')})
                                      )
                                  )
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:label)
                              op: Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(builtin)} {(printf)} {(DQ ('info %-12s-- '))} 
                                            {($ VSub_DollarName '$subcmd')}
                                          )
                                        ]
                                      )
                                  )
                                }
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.Case
              to_match: {($ VSub_DollarName '$subcmd')}
              arms: [
                (case_arm
                  pat_list: [{(ar)} {(arg)} {(args)}]
                  action: [
                    (C {(_Dbg_msg)} 
                      {
                        (DQ ('info args -- Argument variables (e.g. ') 
                          (word_part.EscapedLiteral
                            token: <Lit_EscapedChar '\\$'>
                          ) ('1, ') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) 
                          ('2, ...) of the current stack frame.')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [
                    {(b)}
                    {(br)}
                    {(bre)}
                    {(brea)}
                    {(SQ <break>)}
                    {(breakp)}
                    {(breakpo)}
                    {(breakpoints)}
                    {(w)}
                    {(wa)}
                    {(wat)}
                    {(watc)}
                    {(SQ <watch>)}
                    {(watchp)}
                    {(watchpo)}
                    {(watchpoints)}
                  ]
                  action: [
                    (C {(_Dbg_msg)} {(SQ <'info breakpoints -- Status of user-settable breakpoints'>)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(disp)} {(displ)} {(displa)} {(display)}]
                  action: [
                    (C {(_Dbg_msg)} {(SQ <'info display -- Show all display expressions'>)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(KW_Fi fi)} {(file)} {(files)} {(sources)}]
                  action: [
                    (C {(_Dbg_msg)} {(SQ <'info files -- Source files in the program'>)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [
                    {(fu)}
                    {(fun)}
                    {(KW_Func func)}
                    {(funct)}
                    {(functi)}
                    {(functio)}
                    {(KW_Function function)}
                    {(functions)}
                  ]
                  action: [
                    (C {(_Dbg_msg)} {(SQ <'info functions -- All function names'>)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(l)} {(li)} {(lin)} {(line)}]
                  action: [
                    (C {(_Dbg_msg)} {(SQ <'info line -- list current line number and and file name'>)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(p)} {(pr)} {(pro)} {(prog)} {(progr)} {(progra)} {(program)}]
                  action: [
                    (C {(_Dbg_msg)} {(SQ <'info program -- Execution status of the program.'>)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [
                    {(h)}
                    {(ha)}
                    {(han)}
                    {(hand)}
                    {(handl)}
                    {(handle)}
                    {(si)}
                    {(sig)}
                    {(sign)}
                    {(signa)}
                    {(signal)}
                    {(signals)}
                  ]
                  action: [
                    (C {(_Dbg_msg)} 
                      {(SQ <'info signals -- What debugger does when program gets various signals'>)}
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(so)} {(sou)} {(sourc)} {(source)}]
                  action: [
                    (C {(_Dbg_msg)} {(SQ <'info source -- Information about the current source file'>)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(st)} {(sta)} {(stac)} {(stack)}]
                  action: [
                    (C {(_Dbg_msg)} {(SQ <'info stack -- Backtrace of the stack'>)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [
                    {(tr)}
                    {(tra)}
                    {(trac)}
                    {(trace)}
                    {(tracep)}
                    {(tracepo)}
                    {(tracepoi)}
                    {(tracepoint)}
                    {(tracepoints)}
                  ]
                  action: [
                    (C {(_Dbg_msg)} {(SQ <'info tracepoints -- Status of tracepoints'>)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [
                    {(v)}
                    {(va)}
                    {(KW_Var var)}
                    {(vari)}
                    {(varia)}
                    {(variab)}
                    {(variabl)}
                    {(variable)}
                    {(variables)}
                  ]
                  action: [
                    (C {(_Dbg_msg)} {(SQ <'info variables -- All global and static variable names'>)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(w)} {(wa)} {(war)} {(warr)} {(warra)} {(warran)} {(warrant)} {(warranty)}]
                  action: [
                    (C {(_Dbg_msg)} 
                      {(SQ <'info warranty -- Various kinds of warranty you do not have'>)}
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [
                    (C {(_Dbg_errmsg)} 
                      {
                        (DQ ('Undefined info command: ') 
                          (word_part.EscapedLiteral
                            token: <Lit_EscapedChar '\\"'>
                          ) ($ VSub_DollarName '$subcmd') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ('.  Try ') 
                          (word_part.EscapedLiteral
                            token: <Lit_EscapedChar '\\"'>
                          ) ('help info') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) (.)
                        )
                      }
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
  ]
)