(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:_Dbg_restore_info)
          op: Equal
          rhs: 
            {
              (DQ (${ VSub_Name _Dbg_tmpdir) (/) (${ VSub_Name _Dbg_debugger_name) (_restore_) 
                ($ VSub_Dollar '$$')
              )
            }
          spids: [58]
        )
      ]
      spids: [58]
    )
    (C {(_Dbg_help_add)} {(shell)} 
      {
        (DQ ('**shell** [*options*]\n') ('\n') ('Options:\n') ('--------\n') ('\n') 
          ("   --no-fns  | -F  : don't copy in function definitions from parent shell\n") ("   --no-vars | -V  : don't copy in variable definitions\n") ('   --shell SHELL_NAME\n') 
          ('   --posix         : corresponding shell option\n') ('   --login | l     : corresponding shell option\n') 
          ('   --noprofile     : corresponding shell option\n') ('   --norc          : corresponding shell option\n') ('\n') 
          ('Enter a nested shell, not a subshell. Before entering the shell\n') ('current variable definitions and function definitions are stored in\n') ('profile ') 
          ($ VSub_Name '$_Dbg_shell_temp_profile') ('. which is is read in via the\n') ('**--init-file** option.\n') ('\n') 
          ("If you don't want variable definitions to be set, use option **-V** or\n") ("**--no-vars**. If you don't want function definitions to be set, use\n") 
          ('option **-F** or **--no-fns**. There are several corresponding shell\n') ('options. Many of these by nature defeate reading on saved functions\n') ('and variables.\n') ('\n') 
          ('The shell that used is taken from the shell used to build the debugger\n') ('which is: ') ($ VSub_Name '$_Dbg_shell_name') 
          ('. Use **--shell** to a different compatible shell.\n') ('\n') ('By default, variables set or changed in the shell do not persist after\n') 
          ('the shell is left to to back to the debugger or debugged program.\n') ('\n') ('However you can tag variables to persist by running the function\n') 
          ("'save_vars' which takes a list of variable names. You can run this\n") ('as many times as you want with as many variable names as you want.\n') ('\n') ('For example:\n') 
          ('  save_vars PROFILE PARSER\n') ('marks variable PROFILE and PARSER to be examined and their values used\n') 
          ('in the trap EXIT of the shell.\n')
        )
      }
    )
    (FuncDef
      name: _Dbg_parse_shell_cmd_options
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:OPTLIND) op:Equal rhs:{(SQ )} spids:[130])]
              spids: [130]
            )
            (While
              cond: [
                (C {(getopts_long)} {(lFV)} {(opt)} {(no-fns)} {(0)} {(posix)} {(no_argument)} {(login)} 
                  {(no_argument)} {(shell)} {(required_argument)} {(norc)} {(no_argument)} {(no-vars)} {(0)} {(SQ )} {($ VSub_At '$@')}
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Name '$opt'))}
                      arms: [
                        (case_arm
                          pat_list: [{(F)} {(no-fns)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:_Dbg_o_fns)
                                  op: Equal
                                  rhs: {(0)}
                                  spids: [208]
                                )
                              ]
                              spids: [208]
                            )
                          ]
                          spids: [199 205 210 16777215]
                        )
                        (case_arm
                          pat_list: [{(V)} {(no-vars)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:_Dbg_o_vars)
                                  op: Equal
                                  rhs: {(0)}
                                  spids: [222]
                                )
                              ]
                              spids: [222]
                            )
                          ]
                          spids: [213 219 224 16777215]
                        )
                        (case_arm
                          pat_list: [{(shell)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:shell)
                                  op: Equal
                                  rhs: {($ VSub_Name '$OPTARG')}
                                  spids: [232]
                                )
                              ]
                              spids: [232]
                            )
                          ]
                          spids: [227 229 234 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(norc)}
                            {(posix)}
                            {(restricted)}
                            {(login)}
                            {(l)}
                            {(noediting)}
                            {(noprofile)}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:_Dbg_shell_opts)
                                  op: PlusEqual
                                  rhs: {(DQ (--) ($ VSub_Name '$opt'))}
                                  spids: [266]
                                )
                              ]
                              spids: [266]
                            )
                          ]
                          spids: [237 263 273 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [276 278 286 16777215]
                        )
                      ]
                      spids: [190 196 289]
                    )
                  ]
                  spids: [187 292]
                )
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [127]
        )
      spids: [123 126]
    )
    (FuncDef
      name: _Dbg_do_shell
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Typeset
                  flags: [-i]
                  pairs: [(assign_pair lhs:(LhsName name:_Dbg_o_fns) op:Equal spids:[314])]
                  spids: [310]
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:_Dbg_o_fns) op:Equal rhs:{(1)} spids:[317])]
              spids: [317]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Typeset
                  flags: [-i]
                  pairs: [(assign_pair lhs:(LhsName name:_Dbg_o_vars) op:Equal spids:[325])]
                  spids: [321]
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:_Dbg_o_vars) op:Equal rhs:{(1)} spids:[328])]
              spids: [328]
            )
            (Assignment
              keyword: Assign_Typeset
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_shell_opts)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [334]
                )
              ]
              spids: [332]
            )
            (Assignment
              keyword: Assign_Typeset
              pairs: [
                (assign_pair
                  lhs: (LhsName name:shell)
                  op: Equal
                  rhs: {($ VSub_Name '$_Dbg_shell')}
                  spids: [341]
                )
              ]
              spids: [339]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_NEqual
                              left: (ArithWord w:{($ VSub_Pound '$#')})
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(_Dbg_parse_shell_cmd_options)} {($ VSub_At '$@')})
                    (AndOr
                      children: [
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_NEqual
                              left: (ArithWord w:{($ VSub_QMark '$?')})
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                        (ControlFlow token:<ControlFlow_Return return>)
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [16777215 358]
                )
              ]
              spids: [16777215 382]
            )
            (Assignment
              keyword: Assign_Typeset
              flags: [-i]
              pairs: [(assign_pair lhs:(LhsName name:_Dbg_rc) op:Equal spids:[390])]
              spids: [386]
            )
            (C {(_Dbg_shell_new_shell_profile)} {($ VSub_Name '$_Dbg_o_vars')} 
              {($ VSub_Name '$_Dbg_o_fns')}
            )
            (SimpleCommand
              words: [
                {(echo)}
                {(DQ ("PS1='") (${ VSub_Name _Dbg_debugger_name) (' ') (Lit_Other '$') (" '"))}
              ]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {($ VSub_Name '$_Dbg_shell_temp_profile')}
                  spids: [417]
                )
              ]
            )
            (C {($ VSub_Name '$shell')} {(--init-file)} {($ VSub_Name '$_Dbg_shell_temp_profile')} 
              {($ VSub_Name '$_Dbg_shell_opts')}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:rc)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [431]
                )
              ]
              spids: [431]
            )
            (C {(_Dbg_restore_from_nested_shell)})
            (AndOr
              children: [
                (DParen
                  child: 
                    (ArithBinary
                      op_id: Arith_DEqual
                      left: (ArithWord w:{(Lit_Digits 1)})
                      right: (ArithVarRef name:_Dbg_running)
                    )
                )
                (C {(_Dbg_print_location_and_command)})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [307]
        )
      spids: [303 306]
    )
    (C {(_Dbg_alias_add)} {(sh)} {(shell)})
  ]
)