(command.CommandList
  children: [
    (command.Simple
      blame_tok: <_Dbg_help_add_sub>
      more_env: []
      words: [
        {<_Dbg_help_add_sub>}
        {<info>}
        {<source>}
        {
          (SQ <'**info source**\n'> <'\n'> <'Information about the current source file.\n'> <'\n'> 
            <'See also:\n'> <'---------\n'> <'\n'> <' \\"info program\\", \\"info file\\" and \\"info line\\".'>
          )
        }
        {<1>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <_Dbg_do_info_source>
      name: _Dbg_do_info_source
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_Dbg_msg>
              more_env: []
              words: [
                {<_Dbg_msg>}
                {(DQ <'Current script file is '> ($ Id.VSub_DollarName _Dbg_frame_last_filename))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_Dbg_msg>
              more_env: []
              words: [
                {<_Dbg_msg>}
                {
                  (DQ <'Located in '> 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name _Dbg_file2canonic>
                      var_name: _Dbg_file2canonic
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: {($ Id.VSub_DollarName _Dbg_frame_last_filename)}
                        )
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <typeset>
              more_env: []
              words: [{<typeset>} {<-i>} {<max_line>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'max_line='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'max_line='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'max_line='> name:max_line)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <_Dbg_get_maxline>
                            more_env: []
                            words: [
                              {<_Dbg_get_maxline>}
                              {($ Id.VSub_DollarName _Dbg_frame_last_filename)}
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <_Dbg_msg>
              more_env: []
              words: [{<_Dbg_msg>} {(DQ <'Contains '> ($ Id.VSub_DollarName max_line) <' lines.'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_Dbg_do_list_brkpt>
              more_env: []
              words: [{<_Dbg_do_list_brkpt>} {($ Id.VSub_Star '*')}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
  ]
)