(CommandList
  children: [
    (C {(_Dbg_help_add)} {(source)} 
      {(SQ <"**source** *file*\n"> <"\n"> <"Run debugger commands in *file*.">)}
    )
    (FuncDef
      name: _Dbg_do_source
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: (ArithWord w:{($ VSub_Pound "$#")})
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(_Dbg_errmsg)} {(SQ <"Need to give a filename for the \"source\" command.">)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [-1 105]
                )
              ]
              spids: [-1 120]
            )
            (C {(typeset)} {(filename)})
            (C {(_Dbg_tilde_expand_filename)} {(DQ ($ VSub_Number "$1"))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          children: [
                            (DBracket
                              expr: (BoolUnary op_id:BoolUnary_r child:{($ VSub_Name "$filename")})
                            )
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ ($ VSub_Name "$filename"))}
                                  right: {(SQ </dev/stdin>)}
                                )
                            )
                          ]
                          op_id: Op_DPipe
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(exec)} {(Lit_LBrace "{") (_Dbg_fdi) (Lit_RBrace "}")}]
                      redirects: [
                        (Redir
                          op_id: Redir_Less
                          fd: -1
                          arg_word: {(DQ ($ VSub_Name "$filename"))}
                          spids: [176]
                        )
                      ]
                    )
                    (C 
                      {(_Dbg_fd) (Lit_Other "[") (Lit_Other "+") (Lit_Other "+") (_Dbg_fd_last) 
                        (Lit_Other "]") (Lit_Other "=") ($ VSub_Name "$_Dbg_fdi")
                      }
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:_Dbg_cmdfile)
                          op: PlusEqual
                          rhs: {(ArrayLiteralPart words:[{(DQ ($ VSub_Name "$filename"))}])}
                          spids: [196]
                        )
                      ]
                      spids: [196]
                    )
                  ]
                  spids: [-1 164]
                )
              ]
              else_action: [
                (C {(_Dbg_errmsg)} 
                  {
                    (DQ ("Source file ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
                      ($ VSub_Name "$filename") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" is not readable.")
                    )
                  }
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(3)})
              ]
              spids: [204 223]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [87]
        )
      spids: [83 86]
    )
  ]
)