(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ME_)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(expr)} {(DQ (./) ($ VSub_Number '$0'))} {(Lit_Other ':')} 
                        {(SQ <'.*/\\(.*\\)$'>)}
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [164 177]
              )
            }
          spids: [163]
        )
      ]
      spids: [163]
    )
    (FuncDef
      name: Exit
      body: 
        (BraceGroup
          children: [
            (Sentence child:(C {(set)} {(Lit_Other '+') (e)}) terminator:<Op_Semi ';'>)
            (Sentence
              child: 
                (Subshell
                  child: (ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_Number '$1')})
                  spids: [208 212]
                )
              terminator: <Op_Semi ';'>
            )
            (Sentence
              child: (ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_Number '$1')})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [200]
        )
      spids: [195 199]
    )
    (C {(Lit_Other ':')} 
      {
        (BracedVarSub
          token: <VSub_Name stderr_fileno_>
          suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(2)})
          spids: [243 247]
        )
      }
    )
    (FuncDef
      name: warn_
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: {($ VSub_Name '$IFS')}
              arms: [
                (case_arm
                  pat_list: [{(SQ <' '>) (Lit_Other '*')}]
                  action: [
                    (SimpleCommand
                      words: [{(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Star '$*'))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[297])]
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {($ VSub_Name '$stderr_fileno_')} {(Lit_Other '=')} {(2)})
                        (BraceGroup
                          children: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Star '$*'))})
                                    (SimpleCommand
                                      words: [{(sed)} {(1q)}]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_GreatAnd
                                          fd: 16777215
                                          arg_word: {($ VSub_Name '$stderr_fileno_')}
                                          spids: [331]
                                        )
                                      ]
                                    )
                                  ]
                                  negated: F
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [313]
                        )
                      ]
                    )
                  ]
                  spids: [282 285 338 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Subshell
                      child: 
                        (CommandList
                          children: [
                            (Sentence
                              child: 
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:IFS)
                                      op: Equal
                                      rhs: {(SQ <' '>)}
                                      spids: [345]
                                    )
                                  ]
                                  spids: [345]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (C {(warn_)} {(DQ ($ VSub_At '$@'))})
                          ]
                        )
                      spids: [344 356]
                    )
                  ]
                  spids: [341 342 357 16777215]
                )
              ]
              spids: [274 278 360]
            )
          ]
          spids: [267]
        )
      spids: [262 266]
    )
    (FuncDef
      name: fail_
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(warn_)} {(DQ ($ VSub_Name '$ME_') (': failed test: ') ($ VSub_At '$@'))})
              terminator: <Op_Semi ';'>
            )
            (Sentence child:(C {(Exit)} {(1)}) terminator:<Op_Semi ';'>)
          ]
          spids: [369]
        )
      spids: [364 368]
    )
    (FuncDef
      name: skip_
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(warn_)} {(DQ ($ VSub_Name '$ME_') (': skipped test: ') ($ VSub_At '$@'))})
              terminator: <Op_Semi ';'>
            )
            (Sentence child:(C {(Exit)} {(77)}) terminator:<Op_Semi ';'>)
          ]
          spids: [392]
        )
      spids: [387 391]
    )
    (FuncDef
      name: fatal_
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(warn_)} {(DQ ($ VSub_Name '$ME_') (': hard error: ') ($ VSub_At '$@'))})
              terminator: <Op_Semi ';'>
            )
            (Sentence child:(C {(Exit)} {(99)}) terminator:<Op_Semi ';'>)
          ]
          spids: [415]
        )
      spids: [410 414]
    )
    (FuncDef
      name: framework_failure_
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(warn_)} {(DQ ($ VSub_Name '$ME_') (': set-up failure: ') ($ VSub_At '$@'))})
              terminator: <Op_Semi ';'>
            )
            (Sentence child:(C {(Exit)} {(99)}) terminator:<Op_Semi ';'>)
          ]
          spids: [438]
        )
      spids: [433 437]
    )
    (FuncDef
      name: returns_
      body: 
        (BraceGroup
          children: [
            (BraceGroup
              children: [(Sentence child:(C {(set)} {(Lit_Other '+') (x)}) terminator:<Op_Semi ';'>)]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[497])]
              spids: [487]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:exp_exit)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [504]
                )
              ]
              spids: [502]
            )
            (C {(shift)})
            (C {(DQ ($ VSub_At '$@'))})
            (AndOr
              ops: [Op_DAmp Op_DPipe]
              children: [
                (C {(test)} {($ VSub_QMark '$?')} {(-eq)} {($ VSub_Name '$exp_exit')})
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:ret_) op:Equal rhs:{(0)} spids:[528])]
                  spids: [528]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:ret_) op:Equal rhs:{(1)} spids:[533])]
                  spids: [533]
                )
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {(DQ ($ VSub_Name '$VERBOSE'))} {(Lit_Other '=')} {(yes)})
                            (C {(test)} {(DQ ($ VSub_Name '$gl_set_x_corrupts_stderr_'))} 
                              {(Lit_Other '=')} {(false)}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(set)} {(-x)})]
                  spids: [16777215 563]
                )
              ]
              spids: [16777215 571]
            )
            (BraceGroup
              children: [
                (Sentence
                  child: 
                    (ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {($ VSub_Name '$ret_')}
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[583])]
              spids: [574]
            )
          ]
          spids: [480]
        )
      spids: [475 479]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:DUALCASE) op:Equal rhs:{(1)} spids:[592])]
          spids: [592]
        )
      terminator: <Op_Semi ';'>
    )
    (C {(export)} {(DUALCASE)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(test)} {(-n)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name ZSH_VERSION>
                            suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(set)})
                            spids: [607 611]
                          )
                        )
                      }
                    )
                    (Subshell
                      child: (C {(emulate)} {(sh)})
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(/dev/null)}
                          spids: [622]
                        )
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 2
                          arg_word: {(1)}
                          spids: [625]
                        )
                      ]
                      spids: [616 620]
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(emulate)} {(sh)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NULLCMD)
                  op: Equal
                  rhs: {(Lit_Other ':')}
                  spids: [637]
                )
              ]
              spids: [637]
            )
            (C {(alias)} {(-g)} {(SQ <'${1+"$@"}'>) (Lit_Other '=') (SQ <'"$@"'>)})
            (C {(setopt)} {(NO_GLOB_SUBST)})
          ]
          spids: [16777215 629]
        )
      ]
      else_action: [
        (Case
          to_match: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Subshell
                        child: (C {(set)} {(-o)})
                        redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[670])]
                        spids: [664 668]
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [663 672]
              )
            }
          arms: [
            (case_arm
              pat_list: [{(Lit_Other '*') (posix) (Lit_Other '*')}]
              action: [(C {(set)} {(-o)} {(posix)})]
              spids: [677 680 688 16777215]
            )
          ]
          spids: [661 674 691]
        )
      ]
      spids: [658 693]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:gl_shell_test_script_)
          op: Equal
          rhs: 
            {
              (SQ <'\n'> <'test $(echo y) = y || exit 1\n'> 
                <'f_local_() { local v=1; }; f_local_ || exit 1\n'> <'score_=10\n'> <'if test "$VERBOSE" = yes; then\n'> 
                <'  test -n "$( (exec 3>&1; set -x; P=1 true 2>&3) 2> /dev/null)" && score_=9\n'> <'fi\n'> <'test -z "$EXEEXT" && exit $score_\n'> <'shopt -s expand_aliases\n'> 
                <'alias a-b="echo zoo"\n'> <'v=abx\n'> <'     test ${v%x} = ab \\\n'> <'  && test ${v#a} = bx \\\n'> 
                <'  && test $(a-b) = zoo \\\n'> <'  && exit $score_\n'>
              )
            }
          spids: [757]
        )
      ]
      spids: [757]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(test)} {(DQ (x) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (x--no-reexec))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(shift)})]
          spids: [16777215 793]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:gl_set_x_corrupts_stderr_)
              op: Equal
              rhs: {(false)}
              spids: [805]
            )
          ]
          spids: [805]
        )
        (C {(export)} {(gl_set_x_corrupts_stderr_)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:marginal_) op:Equal rhs:{(EmptyPart)} spids:[819])]
          spids: [819]
        )
        (ForEach
          iter_name: re_shell_
          iter_words: [
            {(__current__)}
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name CONFIG_SHELL>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(no_shell)})
                  spids: [836 840]
                )
              )
            }
            {(/bin/sh)}
            {(bash)}
            {(dash)}
            {(zsh)}
            {(pdksh)}
            {(fail)}
          ]
          do_arg_iter: F
          body: 
            (DoGroup
              children: [
                (AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(test)} {(DQ ($ VSub_Name '$re_shell_'))} {(Lit_Other '=')} {(no_shell)})
                    (ControlFlow token:<ControlFlow_Continue continue>)
                  ]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(test)} {(DQ ($ VSub_Name '$re_shell_'))} {(Lit_Other '=')} {(fail)})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {(-z)} {(DQ ($ VSub_Name '$marginal_'))})
                            (C {(skip_)} {(failed)} {(to)} {(find)} {(an)} {(adequate)} {(shell)})
                          ]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:re_shell_)
                              op: Equal
                              rhs: {($ VSub_Name '$marginal_')}
                              spids: [926]
                            )
                          ]
                          spids: [926]
                        )
                        (ControlFlow token:<ControlFlow_Break break>)
                      ]
                      spids: [16777215 898]
                    )
                  ]
                  spids: [16777215 933]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(test)} {(DQ ($ VSub_Name '$re_shell_'))} {(Lit_Other '=')} 
                              {(__current__)}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Subshell
                          child: (C {(eval)} {(DQ ($ VSub_Name '$gl_shell_test_script_'))})
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 16777215
                              arg_word: {(/dev/null)}
                              spids: [983]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [987]
                            )
                          ]
                          spids: [973 981]
                        )
                      ]
                      spids: [16777215 958]
                    )
                  ]
                  else_action: [
                    (SimpleCommand
                      words: [
                        {(DQ ($ VSub_Name '$re_shell_'))}
                        {(-c)}
                        {(DQ ($ VSub_Name '$gl_shell_test_script_'))}
                      ]
                      redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1004])]
                    )
                  ]
                  spids: [991 1008]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:st_)
                      op: Equal
                      rhs: {($ VSub_QMark '$?')}
                      spids: [1012]
                    )
                  ]
                  spids: [1012]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: (C {(test)} {($ VSub_Name '$st_')} {(Lit_Other '=')} {(10)})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:gl_set_x_corrupts_stderr_)
                              op: Equal
                              rhs: {(false)}
                              spids: [1035]
                            )
                          ]
                          spids: [1035]
                        )
                        (ControlFlow token:<ControlFlow_Break break>)
                      ]
                      spids: [16777215 1032]
                    )
                  ]
                  spids: [16777215 1042]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(test)} {(DQ ($ VSub_Name '$st_') (':') ($ VSub_Name '$marginal_'))} 
                              {(Lit_Other '=')} {(9) (Lit_Other ':')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:marginal_)
                              op: Equal
                              rhs: {(DQ ($ VSub_Name '$re_shell_'))}
                              spids: [1070]
                            )
                          ]
                          spids: [1070]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:gl_set_x_corrupts_stderr_)
                              op: Equal
                              rhs: {(true)}
                              spids: [1076]
                            )
                          ]
                          spids: [1076]
                        )
                      ]
                      spids: [16777215 1067]
                    )
                  ]
                  spids: [16777215 1080]
                )
              ]
              spids: [858 1083]
            )
          spids: [832 16777215]
        )
        (If
          arms: [
            (if_arm
              cond: [
                (Sentence
                  child: 
                    (C {(test)} {(DQ ($ VSub_Name '$re_shell_'))} {(KW_Bang '!') (Lit_Other '=')} 
                      {(__current__)}
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              action: [
                (Case
                  to_match: {($ VSub_Hyphen '$-')}
                  arms: [
                    (case_arm
                      pat_list: [
                        {(Lit_Other '*') (v) (Lit_Other '*') (x) (Lit_Other '*')}
                        {(Lit_Other '*') (x) (Lit_Other '*') (v) (Lit_Other '*')}
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:opts_)
                              op: Equal
                              rhs: {(-vx)}
                              spids: [1130]
                            )
                          ]
                          spids: [1130]
                        )
                      ]
                      spids: [1115 1128 1133 16777215]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other '*') (v) (Lit_Other '*')}]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:opts_)
                              op: Equal
                              rhs: {(-v)}
                              spids: [1141]
                            )
                          ]
                          spids: [1141]
                        )
                      ]
                      spids: [1136 1139 1144 16777215]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other '*') (x) (Lit_Other '*')}]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:opts_)
                              op: Equal
                              rhs: {(-x)}
                              spids: [1152]
                            )
                          ]
                          spids: [1152]
                        )
                      ]
                      spids: [1147 1150 1155 16777215]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other '*')}]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:opts_)
                              op: Equal
                              rhs: {(EmptyPart)}
                              spids: [1161]
                            )
                          ]
                          spids: [1161]
                        )
                      ]
                      spids: [1158 1159 1163 16777215]
                    )
                  ]
                  spids: [1108 1112 1166]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:re_shell)
                      op: Equal
                      rhs: {($ VSub_Name '$re_shell_')}
                      spids: [1169]
                    )
                  ]
                  spids: [1169]
                )
                (C {(export)} {(re_shell)})
                (C {(exec)} {(DQ ($ VSub_Name '$re_shell_'))} {($ VSub_Name '$opts_')} 
                  {(DQ ($ VSub_Number '$0'))} {(--no-reexec)} {(DQ ($ VSub_At '$@'))}
                )
                (SimpleCommand
                  words: [{(echo)} {(DQ ($ VSub_Name '$ME_') (': exec failed'))}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[1204])]
                )
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(127)})
              ]
              spids: [16777215 1101]
            )
          ]
          spids: [16777215 1213]
        )
      ]
      spids: [798 1215]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$BASH_VERSION'))}) (C {(unalias)} {(-a)})]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-n)} {(DQ ($ VSub_Name '$EXEEXT'))})
        (C {(shopt)} {(-s)} {(expand_aliases)})
      ]
    )
    (C {(Lit_Other ':')} 
      {
        (BracedVarSub
          token: <VSub_Name MALLOC_PERTURB_>
          suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(87)})
          spids: [1282 1286]
        )
      }
    )
    (C {(export)} {(MALLOC_PERTURB_)})
    (FuncDef
      name: cleanup_
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)]
          spids: [1307]
        )
      spids: [1302 1306]
    )
    (FuncDef
      name: emit_diff_u_header_
      body: 
        (BraceGroup
          children: [
            (C {(printf)} {(SQ <'%s\\n'>)} {(DQ ('diff -u ') ($ VSub_Star '$*'))} 
              {(DQ ('--- ') ($ VSub_Number '$1') ('\t1970-01-01'))} {(DQ ('+++ ') ($ VSub_Number '$2') ('\t1970-01-01'))}
            )
          ]
          spids: [1326]
        )
      spids: [1321 1325]
    )
    (FuncDef
      name: compare_dev_null_
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_Pound '$#')} {(Lit_Other '=')} {(2)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(2)})
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(test)} {(DQ (x) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(x/dev/null)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(-s)} {(DQ ($ VSub_Number '$2'))})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                    (Sentence
                      child: (C {(emit_diff_u_header_)} {(DQ ($ VSub_At '$@'))})
                      terminator: <Op_Semi ';'>
                    )
                    (C {(sed)} {(SQ <'s/^/+/'>)} {(DQ ($ VSub_Number '$2'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 1415]
                )
              ]
              spids: [16777215 1456]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(test)} {(DQ (x) ($ VSub_Number '$2'))} {(Lit_Other '=')} {(x/dev/null)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(-s)} {(DQ ($ VSub_Number '$1'))})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                    (Sentence
                      child: (C {(emit_diff_u_header_)} {(DQ ($ VSub_At '$@'))})
                      terminator: <Op_Semi ';'>
                    )
                    (C {(sed)} {(SQ <'s/^/-/'>)} {(DQ ($ VSub_Number '$1'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 1474]
                )
              ]
              spids: [16777215 1515]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(2)})
          ]
          spids: [1382]
        )
      spids: [1377 1381]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  ops: [Op_DAmp]
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:diff_out_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Sentence
                                        child: 
                                          (SimpleCommand
                                            words: [{(exec)}]
                                            redirects: [
                                              (Redir
                                                op_id: Redir_Great
                                                fd: 2
                                                arg_word: {(/dev/null)}
                                                spids: [1532]
                                              )
                                            ]
                                          )
                                        terminator: <Op_Semi ';'>
                                      )
                                      (SimpleCommand
                                        words: [
                                          {(diff)}
                                          {(-u)}
                                          {(DQ ($ VSub_Number '$0'))}
                                          {(DQ ($ VSub_Number '$0'))}
                                        ]
                                        redirects: [
                                          (Redir
                                            op_id: Redir_Less
                                            fd: 16777215
                                            arg_word: {(/dev/null)}
                                            spids: [1548]
                                          )
                                        ]
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1529 1551]
                              )
                            }
                          spids: [1528]
                        )
                      ]
                      spids: [1528]
                    )
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(diff)} {(-u)} {(Makefile)} {(DQ ($ VSub_Number '$0'))}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [1567]
                            )
                          ]
                        )
                        (SimpleCommand
                          words: [{(grep)} {(SQ <'^[+]#!'>)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 16777215
                              arg_word: {(/dev/null)}
                              spids: [1578]
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {(-z)} {(DQ ($ VSub_Name '$diff_out_'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (FuncDef
                      name: compare_
                      body: 
                        (BraceGroup
                          children: [
                            (Sentence
                              child: (C {(diff)} {(-u)} {(DQ ($ VSub_At '$@'))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [1612]
                        )
                      spids: [1607 1611]
                    )
                  ]
                  spids: [16777215 1604]
                )
              ]
              else_action: [
                (FuncDef
                  name: compare_
                  body: 
                    (BraceGroup
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (SimpleCommand
                                      words: [{(diff)} {(-u)} {(DQ ($ VSub_At '$@'))}]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_Great
                                          fd: 16777215
                                          arg_word: {(diff.out)}
                                          spids: [1648]
                                        )
                                      ]
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [(C {(rm)} {(-f)} {(diff.out)}) (C {(true)})]
                              spids: [16777215 1653]
                            )
                          ]
                          else_action: [
                            (C {(cat)} {(diff.out)})
                            (C {(rm)} {(-f)} {(diff.out)})
                            (C {(false)})
                          ]
                          spids: [1674 1692]
                        )
                      ]
                      spids: [1635]
                    )
                  spids: [1629 1633]
                )
              ]
              spids: [1626 1698]
            )
          ]
          spids: [16777215 1582]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:diff_out_)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Sentence
                                    child: 
                                      (SimpleCommand
                                        words: [{(exec)}]
                                        redirects: [
                                          (Redir
                                            op_id: Redir_Great
                                            fd: 2
                                            arg_word: {(/dev/null)}
                                            spids: [1706]
                                          )
                                        ]
                                      )
                                    terminator: <Op_Semi ';'>
                                  )
                                  (SimpleCommand
                                    words: [
                                      {(diff)}
                                      {(-c)}
                                      {(DQ ($ VSub_Number '$0'))}
                                      {(DQ ($ VSub_Number '$0'))}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Less
                                        fd: 16777215
                                        arg_word: {(/dev/null)}
                                        spids: [1722]
                                      )
                                    ]
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [1703 1725]
                          )
                        }
                      spids: [1702]
                    )
                  ]
                  spids: [1702]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {(-z)} {(DQ ($ VSub_Name '$diff_out_'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (FuncDef
                      name: compare_
                      body: 
                        (BraceGroup
                          children: [
                            (Sentence
                              child: (C {(diff)} {(-c)} {(DQ ($ VSub_At '$@'))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [1750]
                        )
                      spids: [1745 1749]
                    )
                  ]
                  spids: [16777215 1742]
                )
              ]
              else_action: [
                (FuncDef
                  name: compare_
                  body: 
                    (BraceGroup
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (SimpleCommand
                                      words: [{(diff)} {(-c)} {(DQ ($ VSub_At '$@'))}]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_Great
                                          fd: 16777215
                                          arg_word: {(diff.out)}
                                          spids: [1786]
                                        )
                                      ]
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [(C {(rm)} {(-f)} {(diff.out)}) (C {(true)})]
                              spids: [16777215 1791]
                            )
                          ]
                          else_action: [
                            (C {(cat)} {(diff.out)})
                            (C {(rm)} {(-f)} {(diff.out)})
                            (C {(false)})
                          ]
                          spids: [1816 1834]
                        )
                      ]
                      spids: [1773]
                    )
                  spids: [1767 1771]
                )
              ]
              spids: [1764 1840]
            )
          ]
          spids: [1700 1728]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (SimpleCommand
                  words: [{(cmp)} {(-s)} {(/dev/null)} {(/dev/null)}]
                  redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1852])]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (FuncDef
              name: compare_
              body: 
                (BraceGroup
                  children: [
                    (Sentence
                      child: (C {(cmp)} {(-s)} {(DQ ($ VSub_At '$@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [1864]
                )
              spids: [1859 1863]
            )
          ]
          spids: [1842 1856]
        )
      ]
      else_action: [
        (FuncDef
          name: compare_
          body: 
            (BraceGroup
              children: [(Sentence child:(C {(cmp)} {(DQ ($ VSub_At '$@'))}) terminator:<Op_Semi ';'>)]
              spids: [1885]
            )
          spids: [1880 1884]
        )
      ]
      spids: [1877 1896]
    )
    (FuncDef
      name: compare
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(compare_dev_null_)} {(DQ ($ VSub_At '$@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [16777215 1940]
                )
              ]
              else_action: [
                (Case
                  to_match: {($ VSub_QMark '$?')}
                  arms: [
                    (case_arm
                      pat_list: [{(1)}]
                      action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                      spids: [1958 1959 1964 16777215]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other '*')}]
                      action: [(C {(compare_)} {(DQ ($ VSub_At '$@'))})]
                      spids: [1967 1968 1975 16777215]
                    )
                  ]
                  spids: [1951 1955 1978]
                )
              ]
              spids: [1948 1981]
            )
          ]
          spids: [1916]
        )
      spids: [1911 1915]
    )
    (FuncDef
      name: testdir_prefix_
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(printf)} {(gt)}) terminator:<Op_Semi ';'>)]
          spids: [1994]
        )
      spids: [1989 1993]
    )
    (FuncDef
      name: remove_tmp_
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:__st)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [2018]
                )
              ]
              spids: [2018]
            )
            (C {(cleanup_)})
            (AndOr
              ops: [Op_DPipe Op_DPipe]
              children: [
                (C {(cd)} {(DQ ($ VSub_Name '$initial_cwd_'))})
                (C {(cd)} {(/)})
                (C {(cd)} {(/tmp)})
              ]
            )
            (C {(chmod)} {(-R)} {(u) (Lit_Other '+') (rwx)} {(DQ ($ VSub_Name '$test_dir_'))})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(rm)} {(-rf)} {(DQ ($ VSub_Name '$test_dir_'))})
                (BraceGroup
                  children: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {($ VSub_Name '$__st')} {(Lit_Other '=')} {(0)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:__st)
                                  op: Equal
                                  rhs: {(1)}
                                  spids: [2087]
                                )
                              ]
                              spids: [2087]
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [2075]
                )
              ]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_Name '$__st')})
          ]
          spids: [2015]
        )
      spids: [2010 2014]
    )
    (FuncDef
      name: find_exe_basenames_
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:feb_dir_)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2121]
                )
              ]
              spids: [2121]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:feb_fail_) op:Equal rhs:{(0)} spids:[2125])]
              spids: [2125]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:feb_result_)
                  op: Equal
                  rhs: {(EmptyPart)}
                  spids: [2129]
                )
              ]
              spids: [2129]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:feb_sp_)
                  op: Equal
                  rhs: {(EmptyPart)}
                  spids: [2132]
                )
              ]
              spids: [2132]
            )
            (ForEach
              iter_name: feb_file_
              iter_words: [{($ VSub_Name '$feb_dir_') (/) (Lit_Other '*') (.exe)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DAmp Op_DAmp]
                      children: [
                        (C {(test)} {(DQ (x) ($ VSub_Name '$feb_file_'))} {(Lit_Other '=')} 
                          {(DQ (x) ($ VSub_Name '$feb_dir_') ('/*.exe'))}
                        )
                        (C {(test)} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$feb_file_'))})
                        (ControlFlow token:<ControlFlow_Continue continue>)
                      ]
                    )
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {(DQ (x) ($ VSub_Name '$feb_file_'))} {(Lit_Other '=')} 
                          {(DQ (x) ($ VSub_Name '$feb_dir_') ('/[.exe'))}
                        )
                        (ControlFlow token:<ControlFlow_Continue continue>)
                      ]
                    )
                    (Case
                      to_match: {($ VSub_Name '$feb_file_')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Lit_Other '*') (Lit_Other '[') (KW_Bang '!') (-a-zA-Z/0-9_.) 
                              (Lit_Other '+') (Lit_Other ']') (Lit_Other '*')
                            }
                          ]
                          action: [
                            (Sentence
                              child: 
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:feb_fail_)
                                      op: Equal
                                      rhs: {(1)}
                                      spids: [2240]
                                    )
                                  ]
                                  spids: [2240]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [2231 2238 2245 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:feb_file_)
                                  op: Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name feb_file_>
                                        suffix_op: 
                                          (StringUnary
                                            op_id: VOp1_DPound
                                            arg_word: {('*') (Lit_Slash /)}
                                          )
                                        spids: [2256 2261]
                                      )
                                    }
                                  spids: [2255]
                                )
                              ]
                              spids: [2255]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:feb_file_)
                                  op: Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name feb_file_>
                                        suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(.exe)})
                                        spids: [2265 2269]
                                      )
                                    }
                                  spids: [2264]
                                )
                              ]
                              spids: [2264]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:feb_result_)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_Name '$feb_result_') ($ VSub_Name '$feb_sp_') 
                                        ($ VSub_Name '$feb_file_')
                                      )
                                    }
                                  spids: [2272]
                                )
                              ]
                              spids: [2272]
                            )
                          ]
                          spids: [2248 2249 2278 16777215]
                        )
                      ]
                      spids: [2224 2228 2281]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:feb_sp_)
                          op: Equal
                          rhs: {(SQ <' '>)}
                          spids: [2284]
                        )
                      ]
                      spids: [2284]
                    )
                  ]
                  spids: [2147 2290]
                )
              spids: [2140 2145]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {($ VSub_Name '$feb_fail_')} {(Lit_Other '=')} {(0)})
                (C {(printf)} {(Lit_Other '%') (s)} {(DQ ($ VSub_Name '$feb_result_'))})
              ]
            )
            (ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {($ VSub_Name '$feb_fail_')}
            )
          ]
          spids: [2118]
        )
      spids: [2113 2117]
    )
    (FuncDef
      name: create_exe_shims_
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: {($ VSub_Name '$EXEEXT')}
              arms: [
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [16777215 2352 2358 16777215]
                )
                (case_arm pat_list:[{(.exe)}] spids:[2361 2362 2364 16777215])
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [
                            {(echo)}
                            {
                              (DQ ($ VSub_Number '$0') (': unexpected ') 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar '\\$'>
                                ) ('EXEEXT value: ') ($ VSub_Name '$EXEEXT')
                              )
                            }
                          ]
                          redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[2380])]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [2367 2368 2388 16777215]
                )
              ]
              spids: [2343 2347 2391]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:base_names_)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(find_exe_basenames_)} {($ VSub_Number '$1')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [2396 2400]
                          )
                        }
                      spids: [2395]
                    )
                  ]
                  spids: [2395]
                )
                (BraceGroup
                  children: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [
                            {(echo)}
                            {
                              (DQ ($ VSub_Number '$0') (' (exe_shim): skipping directory: ') 
                                ($ VSub_Number '$1')
                              )
                            }
                          ]
                          redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[2416])]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Sentence
                      child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [2406]
                )
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {(-n)} {(DQ ($ VSub_Name '$base_names_'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (ForEach
                      iter_name: base_
                      iter_words: [{($ VSub_Name '$base_names_')}]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (C {(alias)} 
                              {(DQ ($ VSub_Name '$base_')) (Lit_Other '=') 
                                (DQ ($ VSub_Name '$base_') ($ VSub_Name '$EXEEXT'))
                              }
                            )
                          ]
                          spids: [2452 2467]
                        )
                      spids: [2448 2450]
                    )
                  ]
                  spids: [16777215 2440]
                )
              ]
              spids: [16777215 2470]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2340]
        )
      spids: [2335 2339]
    )
    (FuncDef
      name: path_prepend_
      body: 
        (BraceGroup
          children: [
            (While
              cond: [
                (Sentence
                  child: (C {(test)} {($ VSub_Pound '$#')} {(KW_Bang '!') (Lit_Other '=')} {(0)})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:path_dir_)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [2510]
                        )
                      ]
                      spids: [2510]
                    )
                    (Case
                      to_match: {($ VSub_Name '$path_dir_')}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ )}]
                          action: [
                            (C {(fail_)} {(DQ ("invalid path dir: '") ($ VSub_Number '$1') ("'"))})
                          ]
                          spids: [16777215 2523 2532 16777215]
                        )
                        (case_arm
                          pat_list: [{(/) (Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:abs_path_dir_)
                                  op: Equal
                                  rhs: {($ VSub_Name '$path_dir_')}
                                  spids: [2539]
                                )
                              ]
                              spids: [2539]
                            )
                          ]
                          spids: [2535 2537 2541 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:abs_path_dir_)
                                  op: Equal
                                  rhs: {($ VSub_Name '$initial_cwd_') (/) ($ VSub_Name '$path_dir_')}
                                  spids: [2547]
                                )
                              ]
                              spids: [2547]
                            )
                          ]
                          spids: [2544 2545 2551 16777215]
                        )
                      ]
                      spids: [2514 2518 2554]
                    )
                    (Case
                      to_match: {($ VSub_Name '$abs_path_dir_')}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other '*') (Lit_Other ':') (Lit_Other '*')}]
                          action: [
                            (C {(fail_)} 
                              {(DQ ("invalid path dir: '") ($ VSub_Name '$abs_path_dir_') ("'"))}
                            )
                          ]
                          spids: [2564 2567 2576 16777215]
                        )
                      ]
                      spids: [2557 2561 2579]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:PATH)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$abs_path_dir_') (':') ($ VSub_Name '$PATH'))}
                          spids: [2582]
                        )
                      ]
                      spids: [2582]
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(create_exe_shims_)} {(DQ ($ VSub_Name '$abs_path_dir_'))})
                        (C {(fail_)} 
                          {(DQ ('something failed (above): ') ($ VSub_Name '$abs_path_dir_'))}
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                  spids: [2507 2616]
                )
            )
            (C {(export)} {(PATH)})
          ]
          spids: [2492]
        )
      spids: [2487 2491]
    )
    (FuncDef
      name: setup_
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {(DQ ($ VSub_Name '$VERBOSE'))} {(Lit_Other '=')} {(yes)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {($ VSub_Name '$gl_set_x_corrupts_stderr_')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(warn_)} 
                              {
                                (DQ ('using SHELL=') ($ VSub_Name '$SHELL') 
                                  (" with 'set -x' corrupts stderr")
                                )
                              }
                            )
                          ]
                          spids: [16777215 2675]
                        )
                      ]
                      else_action: [(C {(set)} {(-x)})]
                      spids: [2687 2695]
                    )
                  ]
                  spids: [16777215 2647]
                )
              ]
              spids: [16777215 2698]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:initial_cwd_)
                  op: Equal
                  rhs: {($ VSub_Name '$PWD')}
                  spids: [2702]
                )
              ]
              spids: [2702]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(0)} spids:[2706])]
              spids: [2706]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pfx_)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(testdir_prefix_)})])
                        left_token: <Left_Backtick '`'>
                        spids: [2712 2714]
                      )
                    }
                  spids: [2711]
                )
              ]
              spids: [2711]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:test_dir_)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(mktempd_)} {(DQ ($ VSub_Name '$initial_cwd_'))} 
                                    {(DQ ($ VSub_Name '$pfx_') (-) ($ VSub_Name '$ME_') (.XXXX))}
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [2718 2731]
                          )
                        }
                      spids: [2717]
                    )
                  ]
                  spids: [2717]
                )
                (C {(fail_)} 
                  {(DQ ('failed to create temporary directory in ') ($ VSub_Name '$initial_cwd_'))}
                )
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(cd)} {(DQ ($ VSub_Name '$test_dir_'))})
                (C {(fail_)} {(DQ ('failed to cd to temporary directory'))})
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:gl_init_sh_nl_)
                  op: Equal
                  rhs: {(SQ <'\n'>)}
                  spids: [2769]
                )
              ]
              spids: [2769]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:IFS)
                  op: Equal
                  rhs: {(DQ (' ')) (DQ ('\t') ($ VSub_Name '$gl_init_sh_nl_'))}
                  spids: [2775]
                )
              ]
              spids: [2775]
            )
            (ForEach
              iter_name: sig_
              iter_words: [{(1)} {(2)} {(3)} {(13)} {(15)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(eval)} 
                      {
                        (DQ ("trap 'Exit ") 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(expr)} {($ VSub_Name '$sig_')} {(Lit_Other '+')} {(128)})
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [2822 2830]
                          ) ("' ") ($ VSub_Name '$sig_')
                        )
                      }
                    )
                  ]
                  spids: [2815 2836]
                )
              spids: [2803 2813]
            )
          ]
          spids: [2631]
        )
      spids: [2626 2630]
    )
    (FuncDef
      name: rand_bytes_
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:n_)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2895]
                )
              ]
              spids: [2895]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:chars_)
                  op: Equal
                  rhs: {(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789)}
                  spids: [2909]
                )
              ]
              spids: [2909]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dev_rand_)
                  op: Equal
                  rhs: {(/dev/urandom)}
                  spids: [2913]
                )
              ]
              spids: [2913]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {(-r)} {(DQ ($ VSub_Name '$dev_rand_'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [
                            {(dd)}
                            {(Lit_VarLike 'ibs=') ($ VSub_Name '$n_')}
                            {(Lit_VarLike 'count=') (1)}
                            {(Lit_VarLike 'if=') ($ VSub_Name '$dev_rand_')}
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [2946]
                            )
                          ]
                        )
                        (SimpleCommand
                          words: [
                            {(tr)}
                            {(-c)}
                            {($ VSub_Name '$chars_')}
                            {(01234567) ($ VSub_Name '$chars_') ($ VSub_Name '$chars_') 
                              ($ VSub_Name '$chars_')
                            }
                          ]
                          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[2953])]
                        )
                      ]
                      negated: F
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [16777215 2928]
                )
              ]
              spids: [16777215 2971]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:n_plus_50_)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(expr)} {($ VSub_Name '$n_')} {(Lit_Other '+')} {(50)})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [2976 2984]
                      )
                    }
                  spids: [2975]
                )
              ]
              spids: [2975]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cmds_)
                  op: Equal
                  rhs: {(SQ <'date; date +%N; free; who -a; w; ps auxww; ps ef; netstat -n'>)}
                  spids: [2987]
                )
              ]
              spids: [2987]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:data_)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (Subshell
                                    child: (C {(eval)} {(DQ ($ VSub_Name '$cmds_'))})
                                    redirects: [
                                      (Redir
                                        op_id: Redir_GreatAnd
                                        fd: 2
                                        arg_word: {(1)}
                                        spids: [3004]
                                      )
                                    ]
                                    spids: [2996 3002]
                                  )
                                  (C {(gzip)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [2994 3011]
                      )
                    }
                  spids: [2993]
                )
              ]
              spids: [2993]
            )
            (While
              cond: [(Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:len_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {(DQ ($ VSub_Name '$data_'))})
                                          (C {(wc)} {(-c)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [3028 3038]
                              )
                            }
                          spids: [3027]
                        )
                      ]
                      spids: [3027]
                    )
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {($ VSub_Name '$n_plus_50_')} {(-le)} {($ VSub_Name '$len_')})
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:data_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (Subshell
                                            child: 
                                              (CommandList
                                                children: [
                                                  (Sentence
                                                    child: (C {(echo)} {(DQ ($ VSub_Name '$data_'))})
                                                    terminator: <Op_Semi ';'>
                                                  )
                                                  (C {(eval)} {(DQ ($ VSub_Name '$cmds_'))})
                                                ]
                                              )
                                            redirects: [
                                              (Redir
                                                op_id: Redir_GreatAnd
                                                fd: 2
                                                arg_word: {(1)}
                                                spids: [3073]
                                              )
                                            ]
                                            spids: [3058 3071]
                                          )
                                          (C {(gzip)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [3056 3080]
                              )
                            }
                          spids: [3055]
                        )
                      ]
                      spids: [3055]
                    )
                  ]
                  spids: [3024 3083]
                )
            )
            (Pipeline
              children: [
                (C {(echo)} {(DQ ($ VSub_Name '$data_'))})
                (SimpleCommand
                  words: [
                    {(dd)}
                    {(Lit_VarLike 'bs=') (1)}
                    {(Lit_VarLike 'skip=') (50)}
                    {(Lit_VarLike 'count=') ($ VSub_Name '$n_')}
                  ]
                  redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[3108])]
                )
                (SimpleCommand
                  words: [
                    {(tr)}
                    {(-c)}
                    {($ VSub_Name '$chars_')}
                    {(01234567) ($ VSub_Name '$chars_') ($ VSub_Name '$chars_') 
                      ($ VSub_Name '$chars_')
                    }
                  ]
                  more_env: [(env_pair name:LC_ALL val:{(C)} spids:[3115])]
                )
              ]
              negated: F
            )
          ]
          spids: [2892]
        )
      spids: [2887 2891]
    )
    (FuncDef
      name: mktempd_
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: {($ VSub_Pound '$#')}
              arms: [
                (case_arm pat_list:[{(2)}] spids:[3147 3148 3149 16777215])
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(fail_)} {(DQ ('Usage: mktempd_ DIR TEMPLATE'))})]
                  spids: [3152 3153 3160 16777215]
                )
              ]
              spids: [3140 3144 3163]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:destdir_)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [3167]
                )
              ]
              spids: [3167]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:template_)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [3171]
                )
              ]
              spids: [3171]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MAX_TRIES_) op:Equal rhs:{(4)} spids:[3176])]
              spids: [3176]
            )
            (Case
              to_match: {($ VSub_Name '$destdir_')}
              arms: [
                (case_arm pat_list:[{(/)}] spids:[3196 3197 3199 16777215])
                (case_arm
                  pat_list: [{(Lit_Other '*') (/)}]
                  action: [(C {(fail_)} {(DQ ('invalid destination dir: remove trailing slash(es)'))})]
                  spids: [3202 3204 3211 16777215]
                )
              ]
              spids: [3189 3193 3214]
            )
            (Case
              to_match: {($ VSub_Name '$template_')}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (XXXX)}]
                  spids: [3225 3227 3229 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(fail_)} 
                      {
                        (DQ ('invalid template: ') ($ VSub_Name '$template_') 
                          (" (must have a suffix of at least 4 X's)")
                        )
                      }
                    )
                  ]
                  spids: [3232 3233 3244 16777215]
                )
              ]
              spids: [3218 3222 3247]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:d)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Sentence
                                    child: (C {(unset)} {(TMPDIR)})
                                    terminator: <Op_Semi ';'>
                                  )
                                  (BraceGroup
                                    children: [
                                      (Sentence
                                        child: 
                                          (C {(mktemp)} {(-d)} {(-t)} {(-p)} 
                                            {(DQ ($ VSub_Name '$destdir_'))} {(DQ ($ VSub_Name '$template_'))}
                                          )
                                        terminator: <Op_Semi ';'>
                                      )
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [3283]
                                      )
                                    ]
                                    spids: [3262]
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [3256 3285]
                          )
                        }
                      spids: [3255]
                    )
                  ]
                  spids: [3255]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3291])]
                  spids: [3291]
                )
              ]
            )
            (Case
              to_match: {($ VSub_Name '$d')}
              arms: [
                (case_arm
                  pat_list: [{(DQ ($ VSub_Name '$destdir_')) (Lit_Other '*')}]
                  spids: [3307 3310 3311 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3316])]
                      spids: [3316]
                    )
                  ]
                  spids: [3313 3314 3318 16777215]
                )
              ]
              spids: [3300 3304 3320]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-d)} {(DQ ($ VSub_Name '$d'))})
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3338])]
                  spids: [3338]
                )
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:perms)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (SimpleCommand
                                        words: [{(ls)} {(-dgo)} {(DQ ($ VSub_Name '$d'))}]
                                        redirects: [
                                          (Redir
                                            op_id: Redir_Great
                                            fd: 2
                                            arg_word: {(/dev/null)}
                                            spids: [3357]
                                          )
                                        ]
                                      )
                                      (C {(tr)} {(S)} {(-)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [3348 3365]
                          )
                        }
                      spids: [3347]
                    )
                  ]
                  spids: [3347]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3369])]
                  spids: [3369]
                )
              ]
            )
            (Case
              to_match: {($ VSub_Name '$perms')}
              arms: [
                (case_arm
                  pat_list: [{(drwx------) (Lit_Other '*')}]
                  spids: [3379 3381 3383 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3388])]
                      spids: [3388]
                    )
                  ]
                  spids: [3385 3386 3390 16777215]
                )
              ]
              spids: [3373 3377 3392]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {($ VSub_Name '$fail')} {(Lit_Other '=')} {(0)})
                (BraceGroup
                  children: [
                    (C {(echo)} {(DQ ($ VSub_Name '$d'))})
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [3406]
                )
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:base_template_)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_Name '$template_'))})
                                  (C {(sed)} {(SQ <'s/XX*$//'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [3433 3445]
                      )
                    }
                  spids: [3432]
                )
              ]
              spids: [3432]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:template_length_)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_Name '$template_'))})
                                  (C {(wc)} {(-c)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [3454 3466]
                      )
                    }
                  spids: [3453]
                )
              ]
              spids: [3453]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:nx_)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_Name '$base_template_'))})
                                  (C {(wc)} {(-c)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [3470 3482]
                      )
                    }
                  spids: [3469]
                )
              ]
              spids: [3469]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:nx_)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(expr)} {($ VSub_Name '$template_length_')} {(-)} 
                                {($ VSub_Name '$nx_')}
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [3486 3494]
                      )
                    }
                  spids: [3485]
                )
              ]
              spids: [3485]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:err_) op:Equal rhs:{(EmptyPart)} spids:[3498])]
              spids: [3498]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:i_) op:Equal rhs:{(1)} spids:[3501])]
              spids: [3501]
            )
            (While
              cond: [(Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:X_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(rand_bytes_)} {($ VSub_Name '$nx_')})]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [3514 3518]
                              )
                            }
                          spids: [3513]
                        )
                      ]
                      spids: [3513]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:candidate_dir_)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_Name '$destdir_') (/) ($ VSub_Name '$base_template_') 
                                ($ VSub_Name '$X_')
                              )
                            }
                          spids: [3521]
                        )
                      ]
                      spids: [3521]
                    )
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:err_)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (SimpleCommand
                                            words: [
                                              {(mkdir)}
                                              {(-m)}
                                              {(0700)}
                                              {(DQ ($ VSub_Name '$candidate_dir_'))}
                                            ]
                                            redirects: [
                                              (Redir
                                                op_id: Redir_GreatAnd
                                                fd: 2
                                                arg_word: {(1)}
                                                spids: [3542]
                                              )
                                            ]
                                          )
                                        ]
                                      )
                                    left_token: <Left_Backtick '`'>
                                    spids: [3531 3544]
                                  )
                                }
                              spids: [3530]
                            )
                          ]
                          spids: [3530]
                        )
                        (BraceGroup
                          children: [
                            (Sentence
                              child: (C {(echo)} {(DQ ($ VSub_Name '$candidate_dir_'))})
                              terminator: <Op_Semi ';'>
                            )
                            (Sentence
                              child: (ControlFlow token:<ControlFlow_Return return>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [3550]
                        )
                      ]
                    )
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {($ VSub_Name '$MAX_TRIES_')} {(-le)} {($ VSub_Name '$i_')})
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:i_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(expr)} {($ VSub_Name '$i_')} {(Lit_Other '+')} {(1)})
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [3580 3588]
                              )
                            }
                          spids: [3579]
                        )
                      ]
                      spids: [3579]
                    )
                  ]
                  spids: [3510 3591]
                )
            )
            (C {(fail_)} {(DQ ($ VSub_Name '$err_'))})
          ]
          spids: [3137]
        )
      spids: [3132 3136]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-f)} {(DQ ($ VSub_Name '$srcdir') (/init.cfg))})
        (C {(.)} {(DQ ($ VSub_Name '$srcdir') (/init.cfg))})
      ]
    )
    (C {(setup_)} {(DQ ($ VSub_At '$@'))})
    (C {(trap)} {(remove_tmp_)} {(0)})
  ]
)