(command.CommandList
  children: [
    (command.ShFunction
      name_tok: <test_set_editor>
      name: test_set_editor
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FAKE_EDITOR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FAKE_EDITOR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAKE_EDITOR='> name:FAKE_EDITOR)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<FAKE_EDITOR>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'EDITOR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'EDITOR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EDITOR='> name:EDITOR)
                  op: assign_op.Equal
                  rhs: {(SQ <'"$FAKE_EDITOR"'>)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<EDITOR>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_set_index_version>
      name: test_set_index_version
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'GIT_INDEX_VERSION='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'GIT_INDEX_VERSION='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'GIT_INDEX_VERSION='>
                      name: GIT_INDEX_VERSION
                    )
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<GIT_INDEX_VERSION>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_decode_color>
      name: test_decode_color
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <awk>
              more_env: []
              words: [
                {<awk>}
                {
                  (SQ <'\n'> <'\t\tfunction name(n) {\n'> <'\t\t\tif (n == 0) return "RESET";\n'> 
                    <'\t\t\tif (n == 1) return "BOLD";\n'> <'\t\t\tif (n == 30) return "BLACK";\n'> <'\t\t\tif (n == 31) return "RED";\n'> 
                    <'\t\t\tif (n == 32) return "GREEN";\n'> <'\t\t\tif (n == 33) return "YELLOW";\n'> <'\t\t\tif (n == 34) return "BLUE";\n'> 
                    <'\t\t\tif (n == 35) return "MAGENTA";\n'> <'\t\t\tif (n == 36) return "CYAN";\n'> <'\t\t\tif (n == 37) return "WHITE";\n'> 
                    <'\t\t\tif (n == 40) return "BLACK";\n'> <'\t\t\tif (n == 41) return "BRED";\n'> <'\t\t\tif (n == 42) return "BGREEN";\n'> 
                    <'\t\t\tif (n == 43) return "BYELLOW";\n'> <'\t\t\tif (n == 44) return "BBLUE";\n'> <'\t\t\tif (n == 45) return "BMAGENTA";\n'> 
                    <'\t\t\tif (n == 46) return "BCYAN";\n'> <'\t\t\tif (n == 47) return "BWHITE";\n'> <'\t\t}\n'> <'\t\t{\n'> 
                    <'\t\t\twhile (match($0, /\\033\\[[0-9;]*m/) != 0) {\n'> <'\t\t\t\tprintf "%s<", substr($0, 1, RSTART-1);\n'> 
                    <'\t\t\t\tcodes = substr($0, RSTART+2, RLENGTH-3);\n'> <'\t\t\t\tif (length(codes) == 0)\n'> <'\t\t\t\t\tprintf "%s", name(0)\n'> <'\t\t\t\telse {\n'> 
                    <'\t\t\t\t\tn = split(codes, ary, ";");\n'> <'\t\t\t\t\tsep = "";\n'> <'\t\t\t\t\tfor (i = 1; i <= n; i++) {\n'> 
                    <'\t\t\t\t\t\tprintf "%s%s", sep, name(ary[i]);\n'> <'\t\t\t\t\t\tsep = ";"\n'> <'\t\t\t\t\t}\n'> <'\t\t\t\t}\n'> <'\t\t\t\tprintf ">";\n'> 
                    <
'\t\t\t\t$0 = substr($0, RSTART + RLENGTH, length($0) - RSTART - RLENGTH + 1);\n'
                    > <'\t\t\t}\n'> <'\t\t\tprint\n'> <'\t\t}\n'> <'\t'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <lf_to_nul>
      name: lf_to_nul
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <perl>
              more_env: []
              words: [{<perl>} {<-pe>} {(SQ <'y/\\012/\\000/'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <nul_to_q>
      name: nul_to_q
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <perl>
              more_env: []
              words: [{<perl>} {<-pe>} {(SQ <'y/\\000/Q/'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <q_to_nul>
      name: q_to_nul
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <perl>
              more_env: []
              words: [{<perl>} {<-pe>} {(SQ <'y/Q/\\000/'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <q_to_cr>
      name: q_to_cr
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <tr>
              more_env: []
              words: [{<tr>} {<Q>} {(SQ <'\\015'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <q_to_tab>
      name: q_to_tab
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <tr>
              more_env: []
              words: [{<tr>} {<Q>} {(SQ <'\\011'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <qz_to_tab_space>
      name: qz_to_tab_space
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <tr>
              more_env: []
              words: [{<tr>} {<QZ>} {(SQ <'\\011\\040'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <append_cr>
      name: append_cr
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {<-e>} {(SQ <'s/$/Q/'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <tr>
                  more_env: []
                  words: [{<tr>} {<Q>} {(SQ <'\\015'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <remove_cr>
      name: remove_cr
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <tr>
                  more_env: []
                  words: [{<tr>} {(SQ <'\\015'>)} {<Q>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {<-e>} {(SQ <'s/Q$//'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <sane_unset>
      name: sane_unset
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_tick>
      name: test_tick
      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.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {<-z>}
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name test_tick>
                                  var_name: test_tick
                                  suffix_op: (suffix_op.Unary op:<Id.VTest_Plus _> arg_word:{<set>})
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'test_tick='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'test_tick='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_tick='> name:test_tick)
                          op: assign_op.Equal
                          rhs: {<1112911993>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [407 422]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'test_tick='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'test_tick='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_tick='> name:test_tick)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (word_part.ArithSub
                            left: <Id.Left_DollarDParen '$(('>
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Plus
                                left: {($ Id.VSub_DollarName test_tick)}
                                right: {<Id.Lit_Digits 60>}
                              )
                            right: <Id.Right_DollarDParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'GIT_COMMITTER_DATE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'GIT_COMMITTER_DATE='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'GIT_COMMITTER_DATE='>
                      name: GIT_COMMITTER_DATE
                    )
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName test_tick) <' -0700'>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'GIT_AUTHOR_DATE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'GIT_AUTHOR_DATE='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'GIT_AUTHOR_DATE='>
                      name: GIT_AUTHOR_DATE
                    )
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName test_tick) <' -0700'>)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<GIT_COMMITTER_DATE>} {<GIT_AUTHOR_DATE>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_pause>
      name: test_pause
      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: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_DollarName verbose))}
                                {<Id.Lit_Equals '='>}
                                {<t>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <Id.Left_DoubleQuote '"'>
                      more_env: []
                      words: [{(DQ ($ Id.VSub_DollarName SHELL_PATH))}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_LessAnd '<&'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<6>}
                        )
                        (Redir
                          op: <Id.Redir_GreatAnd '>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<3>}
                        )
                        (Redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<4>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [490 503]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <error>
                  more_env: []
                  words: [{<error>} {(DQ <'test_pause requires --verbose'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<5>})]
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <debug>
      name: debug
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <Id.Left_DoubleQuote '"'>
              more_env: [(EnvPair left:<Id.Lit_VarLike 'GIT_TEST_GDB='> name:GIT_TEST_GDB val:{<1>})]
              words: [{(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_commit>
      name: test_commit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'notick='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'notick='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'notick='> name:notick)
                      op: assign_op.Equal
                      rhs: (rhs_word__Empty)
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'signoff='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'signoff='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'signoff='> name:signoff)
                      op: assign_op.Equal
                      rhs: (rhs_word__Empty)
                    )
                  ]
                  redirects: []
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {($ Id.VSub_Pound '#')}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {<0>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Case
                          case_kw: <Id.KW_Case case>
                          to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                          arms_start: <Id.KW_In in>
                          arms: [
                            (CaseArm
                              left: <--notick>
                              pattern: (pat.Words words:[{<--notick>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'notick='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'notick='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'notick='>
                                          name: notick
                                        )
                                      op: assign_op.Equal
                                      rhs: {<yes>}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <--signoff>
                              pattern: (pat.Words words:[{<--signoff>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'signoff='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'signoff='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'signoff='>
                                          name: signoff
                                        )
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_Number 1))}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <Id.Lit_Star '*'>
                              pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                              middle: <Id.Right_CasePat _>
                              action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                              right: <Id.Op_DSemi _>
                            )
                          ]
                          arms_end: <Id.KW_Esac esac>
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'file='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'file='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Number 2>
                            var_name: 2
                            suffix_op: 
                              (suffix_op.Unary
                                op: <Id.VTest_ColonHyphen _>
                                arg_word: {(DQ ($ Id.VSub_Number 1) <.t>)}
                              )
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Number 3>
                          var_name: 3
                          suffix_op: 
                            (suffix_op.Unary
                              op: <Id.VTest_Hyphen _>
                              arg_word: {($ Id.VSub_Number 1)}
                            )
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName file))}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<add>} {(DQ ($ Id.VSub_DollarName file))}]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName notick))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <test_tick>
                          more_env: []
                          words: [{<test_tick>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [717 728]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<commit>}
                    {($ Id.VSub_DollarName signoff)}
                    {<-m>}
                    {(DQ ($ Id.VSub_Number 1))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<tag>}
                    {
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Number 4>
                          var_name: 4
                          suffix_op: 
                            (suffix_op.Unary
                              op: <Id.VTest_ColonHyphen _>
                              arg_word: {($ Id.VSub_Number 1)}
                            )
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_merge>
      name: test_merge
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test_tick>
                  more_env: []
                  words: [{<test_tick>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<merge>} {<-m>} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<tag>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_chmod>
      name: test_chmod
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <chmod>
                  more_env: []
                  words: [{<chmod>} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<update-index>} {<--add>} {(DQ <'--chmod='> ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_unconfig>
      name: test_unconfig
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'config_dir='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'config_dir='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_dir='> name:config_dir)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {<-C>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'config_dir='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'config_dir='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_dir='> name:config_dir)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [872 885]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [
                {<git>}
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name config_dir>
                    var_name: config_dir
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonPlus _>
                        arg_word: {<'-C '> (DQ ($ Id.VSub_DollarName config_dir))}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
                {<config>}
                {<--unset-all>}
                {(DQ ($ Id.VSub_At '@'))}
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'config_status='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'config_status='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_status='> name:config_status)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName config_status))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <5>
                  pattern: (pat.Words words:[{<5>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'config_status='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'config_status='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'config_status='>
                              name: config_status
                            )
                          op: assign_op.Equal
                          rhs: {<0>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName config_status)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_config>
      name: test_config
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'config_dir='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'config_dir='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_dir='> name:config_dir)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {<-C>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'config_dir='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'config_dir='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_dir='> name:config_dir)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [972 985]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test_when_finished>
                  more_env: []
                  words: [
                    {<test_when_finished>}
                    {
                      (DQ <'test_unconfig '> 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name config_dir>
                          var_name: config_dir
                          suffix_op: 
                            (suffix_op.Unary
                              op: <Id.VTest_ColonPlus _>
                              arg_word: {<'-C \''> ($ Id.VSub_DollarName config_dir) <'\''>}
                            )
                          right: <Id.Right_DollarBrace '}'>
                        ) <' \''> ($ Id.VSub_Number 1) <'\''>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name config_dir>
                        var_name: config_dir
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonPlus _>
                            arg_word: {<'-C '> (DQ ($ Id.VSub_DollarName config_dir))}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                    {<config>}
                    {(DQ ($ Id.VSub_At '@'))}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_config_global>
      name: test_config_global
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test_when_finished>
                  more_env: []
                  words: [
                    {<test_when_finished>}
                    {(DQ <'test_unconfig --global \''> ($ Id.VSub_Number 1) <'\''>)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<config>} {<--global>} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <write_script>
      name: write_script
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {
                              (DQ <'#!'> 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Number 2>
                                  var_name: 2
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VTest_Hyphen _>
                                      arg_word: {(DQ ($ Id.VSub_DollarName SHELL_PATH))}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cat>
                          more_env: []
                          words: [{<cat>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_Number 1))}
                    )
                  ]
                  right: <Id.Lit_RBrace '}'>
                )
                (command.Simple
                  blame_tok: <chmod>
                  more_env: []
                  words: [{<chmod>} {<Id.Lit_Other '+'> <x>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_set_prereq>
      name: test_set_prereq
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'satisfied_prereq='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'satisfied_prereq='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'satisfied_prereq='>
                      name: satisfied_prereq
                    )
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName satisfied_prereq) ($ Id.VSub_Number 1) <' '>)}
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'satisfied_prereq='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'satisfied_prereq='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'satisfied_prereq='> name:satisfied_prereq)
          op: assign_op.Equal
          rhs: {(DQ <' '>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'lazily_testable_prereq='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'lazily_testable_prereq='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'lazily_testable_prereq='>
              name: lazily_testable_prereq
            )
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
        (AssignPair
          left: <Id.Lit_VarLike 'lazily_tested_prereq='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'lazily_tested_prereq='>
              name: lazily_tested_prereq
            )
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <test_lazy_prereq>
      name: test_lazy_prereq
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'lazily_testable_prereq='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'lazily_testable_prereq='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'lazily_testable_prereq='>
                      name: lazily_testable_prereq
                    )
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName lazily_testable_prereq) ($ Id.VSub_Number 1) <' '>)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [
                {<eval>}
                {<test_prereq_lazily_> ($ Id.VSub_Number 1) <Id.Lit_Equals '='> 
                  (word_part.EscapedLiteral
                    token: <Id.Lit_EscapedChar '\\$'>
                    ch: '$'
                  ) <2>
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_run_lazy_prereq_>
      name: test_run_lazy_prereq_
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'script='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'script='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'script='> name:script)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (SQ <'\n'> <'mkdir -p "$TRASH_DIRECTORY/prereq-test-dir" &&\n'> <'(\n'> 
                        <'\tcd "$TRASH_DIRECTORY/prereq-test-dir" &&'>
                      ) (DQ ($ Id.VSub_Number 2)) (SQ <'\n'> <')'>)
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <say>
              more_env: []
              words: [{<say>} {(DQ <'checking prerequisite: '> ($ Id.VSub_Number 1))}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <say>
              more_env: []
              words: [{<say>} {(DQ ($ Id.VSub_DollarName script))}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <test_eval_>
              more_env: []
              words: [{<test_eval_>} {(DQ ($ Id.VSub_DollarName script))}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'eval_ret='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'eval_ret='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eval_ret='> name:eval_ret)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName TRASH_DIRECTORY) <'/prereq-test-dir'>)}]
              redirects: []
              do_fork: T
            )
            (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: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_DollarName eval_ret))}
                                {<Id.Lit_Equals '='>}
                                {<0>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <say>
                      more_env: []
                      words: [{<say>} {(DQ <'prerequisite '> ($ Id.VSub_Number 1) <' ok'>)}]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                      do_fork: T
                    )
                  ]
                  spids: [1278 1291]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <say>
                  more_env: []
                  words: [{<say>} {(DQ <'prerequisite '> ($ Id.VSub_Number 1) <' not satisfied'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName eval_ret)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_have_prereq>
      name: test_have_prereq
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'save_IFS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'save_IFS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'save_IFS='> name:save_IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName IFS)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'IFS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'IFS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Comma ','>}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <set>
              more_env: []
              words: [{<set>} {<-->} {($ Id.VSub_Star '*')}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'IFS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'IFS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName save_IFS)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'total_prereq='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'total_prereq='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'total_prereq='> name:total_prereq)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ok_prereq='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ok_prereq='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ok_prereq='> name:ok_prereq)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'missing_prereq='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'missing_prereq='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'missing_prereq='> name:missing_prereq)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [prerequisite]
              iterable: (for_iter__Args)
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName prerequisite))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.KW_Bang '!'>
                          pattern: (pat.Words words:[{<Id.KW_Bang '!'> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'negative_prereq='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'negative_prereq='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'negative_prereq='>
                                      name: negative_prereq
                                    )
                                  op: assign_op.Equal
                                  rhs: {<t>}
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'prerequisite='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'prerequisite='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'prerequisite='>
                                      name: prerequisite
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name prerequisite>
                                        var_name: prerequisite
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VOp1_Pound '#'>
                                            arg_word: {<Id.Lit_Other '!'>}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'negative_prereq='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'negative_prereq='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'negative_prereq='>
                                      name: negative_prereq
                                    )
                                  op: assign_op.Equal
                                  rhs: (rhs_word__Empty)
                                )
                              ]
                              redirects: []
                            )
                          ]
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: 
                        (case_arg.Word
                          w: {(DQ <' '> ($ Id.VSub_DollarName lazily_tested_prereq) <' '>)}
                        )
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_Star '*'> 
                                  (DQ <' '> ($ Id.VSub_DollarName prerequisite) <' '>) <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: []
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: 
                                (case_arg.Word
                                  w: {(DQ <' '> ($ Id.VSub_DollarName lazily_testable_prereq) <' '>)}
                                )
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: 
                                    (pat.Words
                                      words: [
                                        {<Id.Lit_Star '*'> 
                                          (DQ <' '> ($ Id.VSub_DollarName prerequisite) <' '>) <Id.Lit_Star '*'>
                                        }
                                      ]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <eval>
                                          more_env: []
                                          words: [
                                            {<eval>}
                                            {
                                              (DQ <'script='> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\$'>
                                                  ch: '$'
                                                ) <test_prereq_lazily_> ($ Id.VSub_DollarName prerequisite)
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.If
                                          if_kw: <Id.KW_If if>
                                          arms: [
                                            (IfArm
                                              keyword: <Id.KW_If if>
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (command.Simple
                                                      blame_tok: <test_run_lazy_prereq_>
                                                      more_env: []
                                                      words: [
                                                        {<test_run_lazy_prereq_>}
                                                        {(DQ ($ Id.VSub_DollarName prerequisite))}
                                                        {(DQ ($ Id.VSub_DollarName script))}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                )
                                              then_kw: <Id.KW_Then then>
                                              action: [
                                                (command.Simple
                                                  blame_tok: <test_set_prereq>
                                                  more_env: []
                                                  words: [
                                                    {<test_set_prereq>}
                                                    {($ Id.VSub_DollarName prerequisite)}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              spids: [1484 1497]
                                            )
                                          ]
                                          else_action: []
                                          fi_kw: <Id.KW_Fi fi>
                                          redirects: []
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'lazily_tested_prereq='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'lazily_tested_prereq='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'lazily_tested_prereq='>
                                              name: lazily_tested_prereq
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName lazily_tested_prereq) 
                                                ($ Id.VSub_DollarName prerequisite) <' '>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'total_prereq='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'total_prereq='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'total_prereq='>
                              name: total_prereq
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName total_prereq)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName satisfied_prereq))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_Star '*'> 
                                  (DQ <' '> ($ Id.VSub_DollarName prerequisite) <' '>) <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'satisfied_this_prereq='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'satisfied_this_prereq='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'satisfied_this_prereq='>
                                      name: satisfied_this_prereq
                                    )
                                  op: assign_op.Equal
                                  rhs: {<t>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'satisfied_this_prereq='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'satisfied_this_prereq='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'satisfied_this_prereq='>
                                      name: satisfied_this_prereq
                                    )
                                  op: assign_op.Equal
                                  rhs: (rhs_word__Empty)
                                )
                              ]
                              redirects: []
                            )
                          ]
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: 
                        (case_arg.Word
                          w: 
                            {
                              (DQ ($ Id.VSub_DollarName satisfied_this_prereq) <','> 
                                ($ Id.VSub_DollarName negative_prereq)
                              )
                            }
                        )
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <t>
                          pattern: 
                            (pat.Words
                              words: [{<t> <Id.Lit_Comma ','>} {<Id.Lit_Comma ','> <t>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'ok_prereq='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'ok_prereq='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'ok_prereq='>
                                      name: ok_prereq
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (word_part.ArithSub
                                        left: <Id.Left_DollarDParen '$(('>
                                        anode: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Plus
                                            left: {($ Id.VSub_DollarName ok_prereq)}
                                            right: {<Id.Lit_Digits 1>}
                                          )
                                        right: <Id.Right_DollarDParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'prerequisite='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'prerequisite='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'prerequisite='>
                                      name: prerequisite
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name negative_prereq>
                                        var_name: negative_prereq
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VTest_ColonPlus _>
                                            arg_word: {<Id.Lit_Other '!'>}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      ) ($ Id.VSub_DollarName prerequisite)
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [
                                            {<test>}
                                            {<-z>}
                                            {(DQ ($ Id.VSub_DollarName missing_prereq))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'missing_prereq='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'missing_prereq='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'missing_prereq='>
                                              name: missing_prereq
                                            )
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName prerequisite)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [1628 1639]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'missing_prereq='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'missing_prereq='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'missing_prereq='>
                                          name: missing_prereq
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ ($ Id.VSub_DollarName prerequisite) <','> 
                                            ($ Id.VSub_DollarName missing_prereq)
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <test>
              more_env: []
              words: [
                {<test>}
                {($ Id.VSub_DollarName total_prereq)}
                {<Id.Lit_Equals '='>}
                {($ Id.VSub_DollarName ok_prereq)}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_declared_prereq>
      name: test_declared_prereq
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ <','> ($ Id.VSub_DollarName test_prereq) <','>)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_Star '*'> <Id.Lit_Comma ','> ($ Id.VSub_Number 1) <Id.Lit_Comma ','> 
                          <Id.Lit_Star '*'>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_verify_prereq>
      name: test_verify_prereq
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName test_prereq))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <expr>
                  more_env: []
                  words: [
                    {<expr>}
                    {(DQ ($ Id.VSub_DollarName test_prereq))}
                    {<Id.Lit_Colon ':'>}
                    {(SQ <'[A-Z0-9_,!]*$'>)}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <error>
                  more_env: []
                  words: [
                    {<error>}
                    {
                      (DQ <'bug in the test script: \''> ($ Id.VSub_DollarName test_prereq) 
                        <'\' does not look like a prereq'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_expect_failure>
      name: test_expect_failure
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <test_start_>
              more_env: []
              words: [{<test_start_>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {(DQ ($ Id.VSub_Pound '#'))} {<Id.Lit_Equals '='>} {<3>}]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'test_prereq='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'test_prereq='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'test_prereq='>
                                  name: test_prereq
                                )
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number 1)}
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'test_prereq='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'test_prereq='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_prereq='> name:test_prereq)
                      op: assign_op.Equal
                      rhs: (rhs_word__Empty)
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {(DQ ($ Id.VSub_Pound '#'))} {<Id.Lit_Equals '='>} {<2>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <error>
                  more_env: []
                  words: [
                    {<error>}
                    {(DQ <'bug in the test script: not 2 or 3 parameters to test-expect-failure'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <test_verify_prereq>
              more_env: []
              words: [{<test_verify_prereq>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<test_prereq>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <test_skip>
                              more_env: []
                              words: [{<test_skip>} {(DQ ($ Id.VSub_At '@'))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <say>
                      more_env: []
                      words: [{<say>} {(DQ <'checking known breakage: '> ($ Id.VSub_Number 2))}]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                      do_fork: T
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test_run_>
                                  more_env: []
                                  words: [
                                    {<test_run_>}
                                    {(DQ ($ Id.VSub_Number 2))}
                                    {<expecting_failure>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <test_known_broken_ok_>
                              more_env: []
                              words: [{<test_known_broken_ok_>} {(DQ ($ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [1863 1874]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.Simple
                          blame_tok: <test_known_broken_failure_>
                          more_env: []
                          words: [{<test_known_broken_failure_>} {(DQ ($ Id.VSub_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [1838 1849]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <test_finish_>
              more_env: []
              words: [{<test_finish_>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_expect_success>
      name: test_expect_success
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <test_start_>
              more_env: []
              words: [{<test_start_>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {(DQ ($ Id.VSub_Pound '#'))} {<Id.Lit_Equals '='>} {<3>}]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'test_prereq='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'test_prereq='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'test_prereq='>
                                  name: test_prereq
                                )
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number 1)}
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'test_prereq='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'test_prereq='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_prereq='> name:test_prereq)
                      op: assign_op.Equal
                      rhs: (rhs_word__Empty)
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {(DQ ($ Id.VSub_Pound '#'))} {<Id.Lit_Equals '='>} {<2>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <error>
                  more_env: []
                  words: [
                    {<error>}
                    {(DQ <'bug in the test script: not 2 or 3 parameters to test-expect-success'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <test_verify_prereq>
              more_env: []
              words: [{<test_verify_prereq>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<test_prereq>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <test_skip>
                              more_env: []
                              words: [{<test_skip>} {(DQ ($ Id.VSub_At '@'))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <say>
                      more_env: []
                      words: [{<say>} {(DQ <'expecting success: '> ($ Id.VSub_Number 2))}]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                      do_fork: T
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test_run_>
                                  more_env: []
                                  words: [{<test_run_>} {(DQ ($ Id.VSub_Number 2))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <test_ok_>
                              more_env: []
                              words: [{<test_ok_>} {(DQ ($ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [1997 2006]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.Simple
                          blame_tok: <test_failure_>
                          more_env: []
                          words: [{<test_failure_>} {(DQ ($ Id.VSub_At '@'))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [1972 1983]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <test_finish_>
              more_env: []
              words: [{<test_finish_>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_external>
      name: test_external
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {(DQ ($ Id.VSub_Pound '#'))} {<Id.Lit_Equals '='>} {<4>}]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'test_prereq='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'test_prereq='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'test_prereq='>
                                  name: test_prereq
                                )
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number 1)}
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'test_prereq='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'test_prereq='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_prereq='> name:test_prereq)
                      op: assign_op.Equal
                      rhs: (rhs_word__Empty)
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {(DQ ($ Id.VSub_Pound '#'))} {<Id.Lit_Equals '='>} {<3>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <error>
                  more_env: []
                  words: [
                    {<error>}
                    {(DQ <'bug in the test script: not 3 or 4 parameters to test_external'>)}
                  ]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<5>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'descr='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'descr='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'descr='> name:descr)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <test_verify_prereq>
              more_env: []
              words: [{<test_verify_prereq>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<test_prereq>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <test_skip>
                              more_env: []
                              words: [
                                {<test_skip>}
                                {(DQ ($ Id.VSub_DollarName descr))}
                                {(DQ ($ Id.VSub_At '@'))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <say_color>
                      more_env: []
                      words: [
                        {<say_color>}
                        {(DQ )}
                        {
                          (DQ <'# run '> ($ Id.VSub_DollarName test_count) <': '> 
                            ($ Id.VSub_DollarName descr) <' ('> ($ Id.VSub_Star '*') <')'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <export>
                      more_env: []
                      words: [{<export>} {<TEST_DIRECTORY>} {<TRASH_DIRECTORY>} {<GIT_TEST_LONG>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <Id.Left_DoubleQuote '"'>
                      more_env: []
                      words: [{(DQ ($ Id.VSub_At '@'))}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<4>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {(DQ ($ Id.VSub_QMark '?'))}
                                    {<Id.Lit_Equals '='>}
                                    {<0>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (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: <test>
                                              more_env: []
                                              words: [
                                                {<test>}
                                                {($ Id.VSub_DollarName test_external_has_tap)}
                                                {<-eq>}
                                                {<0>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <test_ok_>
                                      more_env: []
                                      words: [{<test_ok_>} {(DQ ($ Id.VSub_DollarName descr))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [2232 2243]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.Simple
                                  blame_tok: <say_color>
                                  more_env: []
                                  words: [
                                    {<say_color>}
                                    {(DQ )}
                                    {
                                      (DQ <'# test_external test '> ($ Id.VSub_DollarName descr) 
                                        <' was ok'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'test_success='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'test_success='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'test_success='>
                                          name: test_success
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (word_part.ArithSub
                                            left: <Id.Left_DollarDParen '$(('>
                                            anode: 
                                              (arith_expr.Binary
                                                op_id: Id.Arith_Plus
                                                left: {($ Id.VSub_DollarName test_success)}
                                                right: {<Id.Lit_Digits 1>}
                                              )
                                            right: <Id.Right_DollarDParen _>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [2216 2229]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (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: <test>
                                          more_env: []
                                          words: [
                                            {<test>}
                                            {($ Id.VSub_DollarName test_external_has_tap)}
                                            {<-eq>}
                                            {<0>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <test_failure_>
                                  more_env: []
                                  words: [
                                    {<test_failure_>}
                                    {(DQ ($ Id.VSub_DollarName descr))}
                                    {(DQ ($ Id.VSub_At '@'))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              spids: [2285 2296]
                            )
                          ]
                          else_kw: <Id.KW_Else else>
                          else_action: [
                            (command.Simple
                              blame_tok: <say_color>
                              more_env: []
                              words: [
                                {<say_color>}
                                {<error>}
                                {
                                  (DQ <'# test_external test '> ($ Id.VSub_DollarName descr) 
                                    <' failed: '> ($ Id.VSub_At '@')
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'test_failure='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'test_failure='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'test_failure='>
                                      name: test_failure
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (word_part.ArithSub
                                        left: <Id.Left_DollarDParen '$(('>
                                        anode: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Plus
                                            left: {($ Id.VSub_DollarName test_failure)}
                                            right: {<Id.Lit_Digits 1>}
                                          )
                                        right: <Id.Right_DollarDParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [2137 2152]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_external_without_stderr>
      name: test_external_without_stderr
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'tmp='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'tmp='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp='> name:tmp)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name TMPDIR>
                        var_name: TMPDIR
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonHyphen _>
                            arg_word: {<Id.Lit_Slash '/'> <tmp>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'stderr='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'stderr='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stderr='> name:stderr)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName tmp) <'/git-external-stderr.'> ($ Id.VSub_Dollar '$') 
                        <.tmp>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <test_external>
              more_env: []
              words: [{<test_external>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '4>'>
                  loc: (redir_loc.Fd fd:4)
                  arg: {(DQ ($ Id.VSub_DollarName stderr))}
                )
              ]
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName stderr))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <error>
                  more_env: []
                  words: [
                    {<error>}
                    {(DQ <'Internal error: '> ($ Id.VSub_DollarName stderr) <' disappeared.'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'descr='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'descr='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'descr='> name:descr)
                  op: assign_op.Equal
                  rhs: {(DQ <'no stderr: '> ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <say>
              more_env: []
              words: [{<say>} {(DQ <'# expecting no stderr from previous command'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<Id.KW_Bang '!'>} {<-s>} {(DQ ($ Id.VSub_DollarName stderr))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {(DQ ($ Id.VSub_DollarName stderr))}]
                      redirects: []
                      do_fork: T
                    )
                    (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: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {($ Id.VSub_DollarName test_external_has_tap)}
                                        {<-eq>}
                                        {<0>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <test_ok_>
                              more_env: []
                              words: [{<test_ok_>} {(DQ ($ Id.VSub_DollarName descr))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [2463 2474]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.Simple
                          blame_tok: <say_color>
                          more_env: []
                          words: [
                            {<say_color>}
                            {(DQ )}
                            {
                              (DQ <'# test_external_without_stderr test '> 
                                ($ Id.VSub_DollarName descr) <' was ok'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'test_success='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'test_success='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'test_success='>
                                  name: test_success
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (word_part.ArithSub
                                    left: <Id.Left_DollarDParen '$(('>
                                    anode: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Plus
                                        left: {($ Id.VSub_DollarName test_success)}
                                        right: {<Id.Lit_Digits 1>}
                                      )
                                    right: <Id.Right_DollarDParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [2439 2452]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_DollarName verbose))}
                                {<Id.Lit_Equals '='>}
                                {<t>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'output='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'output='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'output='> name:output)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.CommandList
                                        children: [
                                          (command.Sentence
                                            child: 
                                              (command.Simple
                                                blame_tok: <echo>
                                                more_env: []
                                                words: [{<echo>}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            terminator: <Id.Op_Semi _>
                                          )
                                          (command.Sentence
                                            child: 
                                              (command.Simple
                                                blame_tok: <echo>
                                                more_env: []
                                                words: [{<echo>} {(DQ <'# Stderr is:'>)}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            terminator: <Id.Op_Semi _>
                                          )
                                          (command.Simple
                                            blame_tok: <cat>
                                            more_env: []
                                            words: [{<cat>} {(DQ ($ Id.VSub_DollarName stderr))}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        ]
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [2516 2529]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'output='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'output='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'output='> name:output)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <rm>
                  more_env: []
                  words: [{<rm>} {(DQ ($ Id.VSub_DollarName stderr))}]
                  redirects: []
                  do_fork: T
                )
                (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: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {($ Id.VSub_DollarName test_external_has_tap)}
                                    {<-eq>}
                                    {<0>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <test_failure_>
                          more_env: []
                          words: [
                            {<test_failure_>}
                            {(DQ ($ Id.VSub_DollarName descr))}
                            {(DQ ($ Id.VSub_At '@'))}
                            {(DQ ($ Id.VSub_DollarName output))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [2572 2583]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.Simple
                      blame_tok: <say_color>
                      more_env: []
                      words: [
                        {<say_color>}
                        {<error>}
                        {
                          (DQ <'# test_external_without_stderr test '> ($ Id.VSub_DollarName descr) 
                            <' failed: '> ($ Id.VSub_At '@') <': '> ($ Id.VSub_DollarName output)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'test_failure='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'test_failure='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'test_failure='>
                              name: test_failure
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName test_failure)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_path_is_file>
      name: test_path_is_file
      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.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-f>} {(DQ ($ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'File '> ($ Id.VSub_Number 1) <' doesn\'t exist. '> ($ Id.VSub_Number 2))
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <false>
                      more_env: []
                      words: [{<false>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [2654 2667]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_path_is_dir>
      name: test_path_is_dir
      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.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-d>} {(DQ ($ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Directory '> ($ Id.VSub_Number 1) <' doesn\'t exist. '> 
                            ($ Id.VSub_Number 2)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <false>
                      more_env: []
                      words: [{<false>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [2696 2709]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_dir_is_empty>
      name: test_dir_is_empty
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test_path_is_dir>
                  more_env: []
                  words: [{<test_path_is_dir>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {<-n>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (command.Simple
                                              blame_tok: <ls>
                                              more_env: []
                                              words: [{<ls>} {<-a1>} {(DQ ($ Id.VSub_Number 1))}]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <egrep>
                                              more_env: []
                                              words: [{<egrep>} {<-v>} {(SQ <'^\\.\\.?$'>)}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: [<Id.Op_Pipe _>]
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {
                              (DQ <'Directory \''> ($ Id.VSub_Number 1) 
                                <'\' is not empty, it contains:'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <ls>
                          more_env: []
                          words: [{<ls>} {<-la>} {(DQ ($ Id.VSub_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      spids: [2750 2779]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_path_is_missing>
      name: test_path_is_missing
      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.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-e>} {(DQ ($ Id.VSub_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Path exists:'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <ls>
                      more_env: []
                      words: [{<ls>} {<-ld>} {(DQ ($ Id.VSub_Number 1))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {($ Id.VSub_Pound '#')} {<-ge>} {<1>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ ($ Id.VSub_Star '*'))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [2848 2859]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <false>
                      more_env: []
                      words: [{<false>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [2818 2829]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_line_count>
      name: test_line_count
      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.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {($ Id.VSub_Pound '#')}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {<3>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <error>
                      more_env: []
                      words: [
                        {<error>}
                        {(DQ <'bug in the test script: not 3 parameters to test_line_count'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [2919 2931]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <wc>
                                        more_env: []
                                        words: [{<wc>} {<-l>}]
                                        redirects: [
                                          (Redir
                                            op: <Id.Redir_Less '<'>
                                            loc: (redir_loc.Fd fd:0)
                                            arg: {(DQ ($ Id.VSub_Number 3))}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                                {(DQ ($ Id.VSub_Number 1))}
                                {(DQ ($ Id.VSub_Number 2))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'test_line_count: line count for '> ($ Id.VSub_Number 3) <' !'> 
                            ($ Id.VSub_Number 1) <' '> ($ Id.VSub_Number 2)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <cat>
                      more_env: []
                      words: [{<cat>} {(DQ ($ Id.VSub_Number 3))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [2941 2967]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <list_contains>
      name: list_contains
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ <','> ($ Id.VSub_Number 1) <','>)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_Star '*'> <Id.Lit_Comma ','> ($ Id.VSub_Number 2) <Id.Lit_Comma ','> 
                          <Id.Lit_Star '*'>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_must_fail>
      name: test_must_fail
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_VarLike 'ok='>
                  pattern: (pat.Words words:[{<Id.Lit_VarLike 'ok='> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_test_ok='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_test_ok='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_test_ok='> name:_test_ok)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Number 1>
                                var_name: 1
                                suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<'ok='>})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_test_ok='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_test_ok='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_test_ok='> name:_test_ok)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <Id.Left_DoubleQuote '"'>
              more_env: []
              words: [{(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'exit_code='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'exit_code='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exit_code='> name:exit_code)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {($ Id.VSub_DollarName exit_code)} {<-eq>} {<0>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <list_contains>
                                  more_env: []
                                  words: [
                                    {<list_contains>}
                                    {(DQ ($ Id.VSub_DollarName _test_ok))}
                                    {<success>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'test_must_fail: command succeeded: '> ($ Id.VSub_Star '*'))}
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3152 3175]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test_match_signal>
                              more_env: []
                              words: [{<test_match_signal>} {<13>} {($ Id.VSub_DollarName exit_code)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <list_contains>
                              more_env: []
                              words: [
                                {<list_contains>}
                                {(DQ ($ Id.VSub_DollarName _test_ok))}
                                {<sigpipe>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [3194 3213]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {($ Id.VSub_DollarName exit_code)} {<-gt>} {<129>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {($ Id.VSub_DollarName exit_code)} {<-le>} {<192>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'test_must_fail: died by signal '> 
                            (word_part.ArithSub
                              left: <Id.Left_DollarDParen '$(('>
                              anode: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Minus
                                  left: {($ Id.VSub_DollarName exit_code)}
                                  right: {<Id.Lit_Digits 128>}
                                )
                              right: <Id.Right_DollarDParen _>
                            ) <': '> ($ Id.VSub_Star '*')
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3221 3242]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {($ Id.VSub_DollarName exit_code)} {<-eq>} {<127>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'test_must_fail: command not found: '> ($ Id.VSub_Star '*'))}
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3270 3281]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {($ Id.VSub_DollarName exit_code)} {<-eq>} {<126>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'test_must_fail: valgrind error: '> ($ Id.VSub_Star '*'))}]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3300 3311]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_might_fail>
      name: test_might_fail
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <test_must_fail>
              more_env: []
              words: [{<test_must_fail>} {<Id.Lit_VarLike 'ok='> <success>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_expect_code>
      name: test_expect_code
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'want_code='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'want_code='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'want_code='> name:want_code)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <Id.Left_DoubleQuote '"'>
              more_env: []
              words: [{(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'exit_code='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'exit_code='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exit_code='> name:exit_code)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {($ Id.VSub_DollarName exit_code)}
                            {<Id.Lit_Equals '='>}
                            {($ Id.VSub_DollarName want_code)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [3434 3445]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'test_expect_code: command exited with '> ($ Id.VSub_DollarName exit_code) 
                    <', we wanted '> ($ Id.VSub_DollarName want_code) <' '> ($ Id.VSub_Star '*')
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_cmp>
      name: test_cmp
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <Id.VSub_DollarName '$GIT_TEST_CMP'>
              more_env: []
              words: [{($ Id.VSub_DollarName GIT_TEST_CMP)} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_cmp_bin>
      name: test_cmp_bin
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <cmp>
              more_env: []
              words: [{<cmp>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <verbose>
      name: verbose
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Left_DoubleQuote '"'>
                  more_env: []
                  words: [{(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'command failed: '> 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [{<git>} {<rev-parse>} {<--sq-quote>} {(DQ ($ Id.VSub_At '@'))}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_must_be_empty>
      name: test_must_be_empty
      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.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-s>} {(DQ ($ Id.VSub_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'\''> ($ Id.VSub_Number 1) <'\' is not empty, it contains:'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <cat>
                      more_env: []
                      words: [{<cat>} {(DQ ($ Id.VSub_Number 1))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3623 3634]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_cmp_rev>
      name: test_cmp_rev
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<rev-parse>} {<--verify>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<expect.rev>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<rev-parse>} {<--verify>} {(DQ ($ Id.VSub_Number 2))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<actual.rev>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test_cmp>
                  more_env: []
                  words: [{<test_cmp>} {<expect.rev>} {<actual.rev>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_seq>
      name: test_seq
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <1>
                  pattern: (pat.Words words:[{<1>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <set>
                      more_env: []
                      words: [{<set>} {<1>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <2>
                  pattern: (pat.Words words:[{<2>}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <error>
                      more_env: []
                      words: [
                        {<error>}
                        {(DQ <'bug in the test script: not 1 or 2 parameters to test_seq'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'test_seq_counter__='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'test_seq_counter__='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'test_seq_counter__='>
                      name: test_seq_counter__
                    )
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [
                        {<test>}
                        {(DQ ($ Id.VSub_DollarName test_seq_counter__))}
                        {<-le>}
                        {(DQ ($ Id.VSub_Number 2))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ ($ Id.VSub_DollarName test_seq_counter__))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'test_seq_counter__='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'test_seq_counter__='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'test_seq_counter__='>
                              name: test_seq_counter__
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName test_seq_counter__)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_when_finished>
      name: test_when_finished
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [
                    {<test>}
                    {
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name BASH_SUBSHELL>
                          var_name: BASH_SUBSHELL
                          suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:{<0>})
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                    {<Id.Lit_Equals '='>}
                    {<0>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <error>
                  more_env: []
                  words: [
                    {<error>}
                    {(DQ <'bug in test script: test_when_finished does nothing in a subshell'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'test_cleanup='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'test_cleanup='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_cleanup='> name:test_cleanup)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'{ '> ($ Id.VSub_Star '*') <'\n'> <'\t\t} && (exit '> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <eval_ret> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) <'); eval_ret='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'?; '> 
                        ($ Id.VSub_DollarName test_cleanup)
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_create_repo>
      name: test_create_repo
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {(DQ ($ Id.VSub_Pound '#'))} {<Id.Lit_Equals '='>} {<1>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <error>
                  more_env: []
                  words: [
                    {<error>}
                    {(DQ <'bug in the test script: not 1 parameter to test-create-repo'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'repo='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'repo='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'repo='> name:repo)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName repo))}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Subshell
                  left: <Id.Op_LParen _>
                  child: 
                    (command.CommandList
                      children: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <cd>
                              more_env: []
                              words: [{<cd>} {(DQ ($ Id.VSub_DollarName repo))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <error>
                              more_env: []
                              words: [{<error>} {(DQ <'Cannot setup test environment'>)}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <Id.Left_DoubleQuote '"'>
                              more_env: []
                              words: [
                                {(DQ ($ Id.VSub_DollarName GIT_EXEC_PATH) <'/git-init'>)}
                                {
                                  (DQ <'--template='> ($ Id.VSub_DollarName GIT_BUILD_DIR) 
                                    <'/templates/blt/'>
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<3>}
                                )
                                (Redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<4>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <error>
                              more_env: []
                              words: [
                                {<error>}
                                {(DQ <'cannot run git init -- have you built things yet?'>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                        (command.Simple
                          blame_tok: <mv>
                          more_env: []
                          words: [{<mv>} {<'.git/hooks'>} {<'.git/hooks-disabled'>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  right: <Id.Right_Subshell _>
                  redirects: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_ln_s_add>
      name: test_ln_s_add
      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.Simple
                          blame_tok: <test_have_prereq>
                          more_env: []
                          words: [{<test_have_prereq>} {<SYMLINKS>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <ln>
                          more_env: []
                          words: [{<ln>} {<-s>} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [{<git>} {<update-index>} {<--add>} {(DQ ($ Id.VSub_Number 2))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  spids: [4095 4102]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [{<printf>} {(SQ <'%s'>)} {(DQ ($ Id.VSub_Number 1))}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_Number 2))}
                        )
                      ]
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ln_s_obj='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ln_s_obj='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ln_s_obj='> name:ln_s_obj)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <git>
                                    more_env: []
                                    words: [{<git>} {<hash-object>} {<-w>} {(DQ ($ Id.VSub_Number 2))}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [
                        {<git>}
                        {<update-index>}
                        {<--add>}
                        {<--cacheinfo>}
                        {<120000>}
                        {($ Id.VSub_DollarName ln_s_obj)}
                        {(DQ ($ Id.VSub_Number 2))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<update-index>} {(DQ ($ Id.VSub_Number 2))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_write_lines>
      name: test_write_lines
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [{<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <perl>
      name: perl
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <command>
              more_env: []
              words: [{<command>} {(DQ ($ Id.VSub_DollarName PERL_PATH))} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_normalize_bool>
      name: test_normalize_bool
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [
                {<git>}
                {<-c>}
                {<magic.variable> <Id.Lit_Equals '='> (DQ ($ Id.VSub_Number 1))}
                {<config>}
                {<--bool>}
                {<magic.variable>}
              ]
              redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_tristate>
      name: test_tristate
      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.Simple
                          blame_tok: <eval>
                          more_env: []
                          words: [
                            {<eval>}
                            {
                              (DQ <'test x'> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\"'>
                                  ch: '"'
                                ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{'> ($ Id.VSub_Number 1) 
                                <'+isset}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' = xisset'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {
                          (DQ <'\n'> <'\t\t\tcase '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') ($ Id.VSub_Number 1) 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) <' in\n'> <'\t\t\t\'\')\t'> ($ Id.VSub_Number 1) <'=false ;;\n'> <'\t\t\tauto)\t;;\n'> <'\t\t\t*)\t'> 
                            ($ Id.VSub_Number 1) <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'(test_normalize_bool '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\$'>
                              ch: '$'
                            ) ($ Id.VSub_Number 1) <' || echo true) ;;\n'> <'\t\t\tesac\n'> <'\t\t'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [4339 4355]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <eval>
                  more_env: []
                  words: [{<eval>} {(DQ ($ Id.VSub_Number 1) <'=auto'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_skip_or_die>
      name: test_skip_or_die
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <auto>
                  pattern: (pat.Words words:[{<auto>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'skip_all='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'skip_all='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip_all='> name:skip_all)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 2)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <test_done>
                      more_env: []
                      words: [{<test_done>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <true>
                  pattern: (pat.Words words:[{<true>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <error>
                      more_env: []
                      words: [{<error>} {(DQ ($ Id.VSub_Number 2))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <error>
                      more_env: []
                      words: [
                        {<error>}
                        {
                          (DQ <'BUG: test tristate is \''> ($ Id.VSub_Number 1) <'\' (real error: '> 
                            ($ Id.VSub_Number 2) <')'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <mingw_test_cmp>
      name: mingw_test_cmp
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'test_cmp_a='>} {<Id.Lit_VarLike 'test_cmp_b='>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'stdin_for_diff='>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-s>} {(DQ ($ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-s>} {(DQ ($ Id.VSub_Number 2))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <mingw_read_file_strip_cr_>
                      more_env: []
                      words: [{<mingw_read_file_strip_cr_>} {<test_cmp_a>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_Number 1))}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mingw_read_file_strip_cr_>
                      more_env: []
                      words: [{<mingw_read_file_strip_cr_>} {<test_cmp_b>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_Number 2))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [4554 4575]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-s>} {(DQ ($ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_Equals '='>} {<->}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <mingw_read_file_strip_cr_>
                      more_env: []
                      words: [{<mingw_read_file_strip_cr_>} {<test_cmp_a>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_Number 1))}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mingw_read_file_strip_cr_>
                      more_env: []
                      words: [{<mingw_read_file_strip_cr_>} {<test_cmp_b>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'stdin_for_diff='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'stdin_for_diff='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'stdin_for_diff='>
                              name: stdin_for_diff
                            )
                          op: assign_op.Equal
                          rhs: {(SQ <'<<<"$test_cmp_b"'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [4602 4625]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {<->}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-s>} {(DQ ($ Id.VSub_Number 2))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <mingw_read_file_strip_cr_>
                      more_env: []
                      words: [{<mingw_read_file_strip_cr_>} {<test_cmp_a>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mingw_read_file_strip_cr_>
                      more_env: []
                      words: [{<mingw_read_file_strip_cr_>} {<test_cmp_b>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_Number 2))}
                        )
                      ]
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'stdin_for_diff='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'stdin_for_diff='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'stdin_for_diff='>
                              name: stdin_for_diff
                            )
                          op: assign_op.Equal
                          rhs: {(SQ <'<<<"$test_cmp_a"'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [4653 4676]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName test_cmp_a))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName test_cmp_b))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [
                    {<test>}
                    {(DQ ($ Id.VSub_DollarName test_cmp_a))}
                    {<Id.Lit_Equals '='>}
                    {(DQ ($ Id.VSub_DollarName test_cmp_b))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <eval>
                  more_env: []
                  words: [
                    {<eval>}
                    {
                      (DQ <'diff -u '> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'@'> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) <' '> ($ Id.VSub_DollarName stdin_for_diff)
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <mingw_read_file_strip_cr_>
      name: mingw_read_file_strip_cr_
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<line>}]
              redirects: []
              do_fork: T
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <Id.Lit_Colon ':'>
                      more_env: []
                      words: [{<Id.Lit_Colon ':'>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <read>
                                  more_env: [
                                    (EnvPair
                                      left: <Id.Lit_VarLike 'IFS='>
                                      name: IFS
                                      val: 
                                        {
                                          (SingleQuoted
                                            left: <Id.Left_DollarSingleQuote '$\''>
                                            tokens: [<Id.Char_OneChar '\\r'>]
                                            right: <Id.Right_SingleQuote '\''>
                                          )
                                        }
                                    )
                                  ]
                                  words: [
                                    {<read>}
                                    {<-r>}
                                    {<-d>}
                                    {
                                      (SingleQuoted
                                        left: <Id.Left_DollarSingleQuote '$\''>
                                        tokens: [<Id.Char_OneChar '\\n'>]
                                        right: <Id.Right_SingleQuote '\''>
                                      )
                                    }
                                    {<line>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'line='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'line='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'line='> name:line)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName line) 
                                      (SingleQuoted
                                        left: <Id.Left_DollarSingleQuote '$\''>
                                        tokens: [<Id.Char_OneChar '\\n'>]
                                        right: <Id.Right_SingleQuote '\''>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [4791 4811]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName line))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                              spids: [4840 4851]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {
                          (DQ ($ Id.VSub_Number 1) <'='> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\$'>
                              ch: '$'
                            ) ($ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <line>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_env>
      name: test_env
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {($ Id.VSub_Pound '#')} {<-gt>} {<0>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Case
                          case_kw: <Id.KW_Case case>
                          to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                          arms_start: <Id.KW_In in>
                          arms: [
                            (CaseArm
                              left: <Id.Lit_Star '*'>
                              pattern: 
                                (pat.Words
                                  words: [{<Id.Lit_Star '*'> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]
                                )
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.Simple
                                  blame_tok: <eval>
                                  more_env: []
                                  words: [
                                    {<eval>}
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Number 1>
                                          var_name: 1
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VOp1_DPercent '%%'>
                                              arg_word: {<'='> <Id.Lit_Other '*'>}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        ) <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{1#*=}'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <eval>
                                  more_env: []
                                  words: [
                                    {<eval>}
                                    {
                                      (DQ <'export '> 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Number 1>
                                          var_name: 1
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VOp1_DPercent '%%'>
                                              arg_word: {<'='> <Id.Lit_Other '*'>}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <shift>
                                  more_env: []
                                  words: [{<shift>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <Id.Lit_Star '*'>
                              pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.Simple
                                  blame_tok: <Id.Left_DoubleQuote '"'>
                                  more_env: []
                                  words: [{(DQ ($ Id.VSub_At '@'))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Exit exit>
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                          ]
                          arms_end: <Id.KW_Esac esac>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              right: <Id.Right_Subshell _>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_match_signal>
      name: test_match_signal
      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.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {(DQ ($ Id.VSub_Number 2))}
                            {<Id.Lit_Equals '='>}
                            {
                              (DQ 
                                (word_part.ArithSub
                                  left: <Id.Left_DollarDParen '$(('>
                                  anode: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: {<Id.Lit_Digits 128>}
                                      right: {($ Id.VSub_Number 1)}
                                    )
                                  right: <Id.Right_DollarDParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [5007 5029]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {(DQ ($ Id.VSub_Number 2))}
                            {<Id.Lit_Equals '='>}
                            {
                              (DQ 
                                (word_part.ArithSub
                                  left: <Id.Left_DollarDParen '$(('>
                                  anode: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: {<Id.Lit_Digits 256>}
                                      right: {($ Id.VSub_Number 1)}
                                    )
                                  right: <Id.Right_DollarDParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [5041 5063]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_copy_bytes>
      name: test_copy_bytes
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <perl>
              more_env: []
              words: [
                {<perl>}
                {<-e>}
                {
                  (SQ <'\n'> <'\t\tmy $len = $ARGV[1];\n'> <'\t\twhile ($len > 0) {\n'> 
                    <'\t\t\tmy $s;\n'> <'\t\t\tmy $nread = sysread(STDIN, $s, $len);\n'> 
                    <'\t\t\tdie "cannot read: $!" unless defined($nread);\n'> <'\t\t\tprint $s;\n'> <'\t\t\t$len -= $nread;\n'> <'\t\t}\n'> <'\t'>
                  )
                }
                {<->}
                {(DQ ($ Id.VSub_Number 1))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
  ]
)