(command.CommandList
  children: [
    (C {<_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>}
    )
    (command.ShFunction
      name: _Dbg_do_info_source
      body: 
        (BraceGroup
          children: [
            (C {<_Dbg_msg>} 
              {(DQ <'Current script file is '> ($ Id.VSub_DollarName '$_Dbg_frame_last_filename'))}
            )
            (C {<_Dbg_msg>} 
              {
                (DQ <'Located in '> 
                  (braced_var_sub
                    token: <Id.VSub_Name _Dbg_file2canonic>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: {($ Id.VSub_DollarName '$_Dbg_frame_last_filename')}
                      )
                  )
                )
              }
            )
            (C {<typeset>} {<-i>} {<max_line>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:max_line)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<_Dbg_get_maxline>} {($ Id.VSub_DollarName '$_Dbg_frame_last_filename')})
                      )
                    }
                  spids: [120]
                )
              ]
            )
            (C {<_Dbg_msg>} {(DQ <'Contains '> ($ Id.VSub_DollarName '$max_line') <' lines.'>)})
            (C {<_Dbg_do_list_brkpt>} {($ Id.VSub_Star '$*')})
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
  ]
)