(command.CommandList
  children: [
    (command.ShFunction
      name_tok: <source_em>
      name: source_em
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'current_script='> (DQ ($ Id.VSub_DollarName em_script))}
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'em_script='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'em_script='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'em_script='> name:em_script)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <.>
              more_env: []
              words: [{<.>} {($ Id.VSub_DollarName em_script)}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'em_script='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'em_script='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'em_script='> name:em_script)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName current_script)}
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fragment>
      name: fragment
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name BASH_VERSINFO>
                                    var_name: BASH_VERSINFO
                                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>})
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                                {<-ge>}
                                {<3>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'lineno='> 
                          (word_part.ExprSub
                            left: <Id.Left_DollarBracket '$['>
                            child: 
                              (expr.Binary
                                op: <Id.Arith_Plus _>
                                left: 
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name BASH_LINENO>
                                    var_name: BASH_LINENO
                                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                right: (expr.Const c:<Id.Expr_DecInt 1>)
                              )
                            right: <Id.Op_RBracket _>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'#line '> ($ Id.VSub_DollarName lineno) <' '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) ($ Id.VSub_DollarName em_script) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                          )
                        }
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<e> (${ Id.VSub_Name EMULATION_NAME) <.c>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [39 57]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<e> (${ Id.VSub_Name EMULATION_NAME) <.c>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
  ]
)