(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (FuncDef
      name: _compare
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(Lit_Other '+') (o)} {(errexit)})
            (SimpleCommand
              words: [{(DQ ($ VSub_At '$@'))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(_tmp/shebang.txt)}
                  spids: [67]
                )
              ]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:expected_status)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [73]
                )
              ]
              spids: [71]
            )
            (SimpleCommand
              words: [{(bin/osh)} {(DQ ($ VSub_At '$@'))}]
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(_tmp/osh.txt)} spids:[84])]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:osh_status)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [90]
                )
              ]
              spids: [88]
            )
            (C {(set)} {(-o)} {(errexit)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(diff)} {(-u)} {(_tmp/shebang.txt)} {(_tmp/osh.txt)})]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(FAIL)})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 116]
                )
              ]
              spids: [16777215 129]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(test)} {($ VSub_Name '$expected_status')} {(KW_Bang '!') (Lit_Other '=')} 
                          {($ VSub_Name '$osh_status')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('FAIL: Got status ') ($ VSub_Name '$osh_status') (' but expected ') 
                          ($ VSub_Name '$expected_status')
                        )
                      }
                    )
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 145]
                )
              ]
              spids: [16777215 163]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [51]
        )
      spids: [47 50]
    )
    (FuncDef
      name: version-text
      body: (BraceGroup children:[(C {(_compare)} {(test/spec.sh)} {(version-text)})] spids:[187])
      spids: [183 186]
    )
    (FuncDef
      name: count
      body: 
        (BraceGroup
          children: [
            (C {(_compare)} {(scripts/count.sh)} {(all)})
            (C {(_compare)} {(scripts/count.sh)} {(parser)})
            (C {(_compare)} {(scripts/count.sh)} {(parser-port)})
            (C {(_compare)} {(scripts/count.sh)} {(runtime)})
          ]
          spids: [206]
        )
      spids: [202 205]
    )
    (FuncDef
      name: one-spec-test
      body: 
        (BraceGroup
          children: [(C {(_compare)} {(test/spec.sh)} {(builtins-special)})]
          spids: [246]
        )
      spids: [242 245]
    )
    (FuncDef
      name: html-summary
      body: 
        (BraceGroup
          children: [(C {(_compare)} {(test/spec-runner.sh)} {(html-summary)})]
          spids: [265]
        )
      spids: [261 264]
    )
    (FuncDef
      name: gen-module-init
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:modules)
                  op: Equal
                  rhs: {(SQ <'time datetime'>)}
                  spids: [286]
                )
              ]
              spids: [284]
            )
            (C {(_compare)} {(build/actions.sh)} {(gen-module-init)} {($ VSub_Name '$modules')})
          ]
          spids: [281]
        )
      spids: [277 280]
    )
    (FuncDef
      name: wild
      body: 
        (BraceGroup
          children: [(C {(_compare)} {(test/wild.sh)} {(all)} {(SQ <'^distro/usr-bin'>)})]
          spids: [307]
        )
      spids: [303 306]
    )
    (FuncDef
      name: startup-benchmark
      body: 
        (BraceGroup
          children: [(C {(_compare)} {(benchmarks/startup.sh)} {(compare-strace)})]
          spids: [342]
        )
      spids: [338 341]
    )
    (FuncDef
      name: configure
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(./configure)}) terminator:<Op_Semi ';'>)]
          spids: [358]
        )
      spids: [354 357]
    )
    (FuncDef
      name: nix
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(_compare)} {(gold/nix.sh)} {(isElfSimpleWithStdin)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [371]
        )
      spids: [367 370]
    )
    (FuncDef
      name: and-or
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(_compare)} {(gold/and-or.sh)} {(test-simple)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [386]
        )
      spids: [382 385]
    )
    (FuncDef
      name: comments
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(gold/comments.sh)}) terminator:<Op_Semi ';'>)]
          spids: [402]
        )
      spids: [398 401]
    )
    (FuncDef
      name: readonly_
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(gold/readonly.sh)}) terminator:<Op_Semi ';'>)]
          spids: [415]
        )
      spids: [411 414]
    )
    (FuncDef
      name: export
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(gold/export.sh)}) terminator:<Op_Semi ';'>)]
          spids: [428]
        )
      spids: [424 427]
    )
    (FuncDef
      name: glob
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(gold/glob.sh)}) terminator:<Op_Semi ';'>)]
          spids: [441]
        )
      spids: [437 440]
    )
    (FuncDef
      name: no-op
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(scripts/count.sh)}) terminator:<Op_Semi ';'>)]
          spids: [454]
        )
      spids: [450 453]
    )
    (FuncDef
      name: complex-here-docs
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(_compare)} {(gold/complex-here-docs.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [467]
        )
      spids: [463 466]
    )
    (FuncDef
      name: strip-op-char-class
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(_compare)} {(gold/strip-op-char-class.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [481]
        )
      spids: [477 480]
    )
    (FuncDef
      name: echo-e
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(gold/echo-e.sh)}) terminator:<Op_Semi ';'>)]
          spids: [498]
        )
      spids: [494 497]
    )
    (FuncDef
      name: dollar-sq
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(gold/dollar-sq.sh)}) terminator:<Op_Semi ';'>)]
          spids: [511]
        )
      spids: [507 510]
    )
    (FuncDef
      name: abuild
      body: 
        (BraceGroup
          children: [(C {(_compare)} {(gold/abuild.sh)} {(is_function)} {(is_function)})]
          spids: [525]
        )
      spids: [521 524]
    )
    (FuncDef
      name: declare
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(_compare)} {(gold/declare.sh)} {(demo)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [546]
        )
      spids: [542 545]
    )
    (FuncDef
      name: scope
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(gold/scope.sh)}) terminator:<Op_Semi ';'>)]
          spids: [565]
        )
      spids: [561 564]
    )
    (Assignment
      keyword: Assign_Readonly
      flags: [-a]
      pairs: [
        (assign_pair
          lhs: (LhsName name:PASSING)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                words: [
                  {(configure)}
                  {(nix)}
                  {(and-or)}
                  {(comments)}
                  {(readonly_)}
                  {(export)}
                  {(glob)}
                  {(no-op)}
                  {(complex-here-docs)}
                  {(strip-op-char-class)}
                  {(abuild)}
                  {(count)}
                  {(one-spec-test)}
                  {(html-summary)}
                  {(gen-module-init)}
                ]
              )
            }
          spids: [580]
        )
      ]
      spids: [576]
    )
    (FuncDef
      name: all-passing
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: t
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name PASSING>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [678 683]
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [(C {($ VSub_Name '$t')}) (C {(echo)} {(DQ ('OK  ') ($ VSub_Name '$t'))})]
                  spids: [687 705]
                )
              spids: [676 685]
            )
            (C {(echo)})
            (C {(echo)} {(DQ ('All gold tests passed.'))})
          ]
          spids: [668]
        )
      spids: [664 667]
    )
    (FuncDef
      name: run-for-release
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:out_dir) op:Equal rhs:{(_tmp/gold)} spids:[730])]
              spids: [728]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$out_dir')})
            (Pipeline
              children: [(C {(all-passing)}) (C {(tee)} {($ VSub_Name '$out_dir') (/log.txt)})]
              negated: F
            )
            (C {(echo)} {(DQ ('Wrote ') ($ VSub_Name '$out_dir') (/log.txt))})
          ]
          spids: [725]
        )
      spids: [721 724]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)