(CommandList
  children: [
    (FuncDef
      name: source_em
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:current_script)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$em_script'))}
                  spids: [12]
                )
              ]
              spids: [10]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:em_script)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [18]
                )
              ]
              spids: [18]
            )
            (C {(.)} {($ VSub_Name '$em_script')})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:em_script)
                  op: Equal
                  rhs: {($ VSub_Name '$current_script')}
                  spids: [27]
                )
              ]
              spids: [27]
            )
          ]
          spids: [7]
        )
      spids: [3 6]
    )
    (FuncDef
      name: fragment
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (BracedVarSub
                              token: <VSub_Name BASH_VERSINFO>
                              bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 3)}))
                              spids: [43 48]
                            )
                          } {(-ge)} {(3)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:lineno)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: 
                                      (ArithWord
                                        w: 
                                          {
                                            (BracedVarSub
                                              token: <VSub_Name BASH_LINENO>
                                              bracket_op: 
                                                (ArrayIndex
                                                  expr: (ArithWord w:{(Lit_Digits 0)})
                                                )
                                              spids: [64 69]
                                            )
                                          }
                                      )
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [63 74]
                              )
                            }
                          spids: [62]
                        )
                      ]
                      spids: [60]
                    )
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ ('#line ') ($ VSub_Name '$lineno') (' ') 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar '\\"'>
                            ) ($ VSub_Name '$em_script') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                          )
                        }
                      ]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: -1
                          arg_word: {(e) (${ VSub_Name EMULATION_NAME) (.c)}
                          spids: [79]
                        )
                      ]
                    )
                  ]
                  spids: [-1 57]
                )
              ]
              spids: [-1 97]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: -1
                  arg_word: {(e) (${ VSub_Name EMULATION_NAME) (.c)}
                  spids: [102]
                )
              ]
            )
          ]
          spids: [36]
        )
      spids: [32 35]
    )
  ]
)