(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/left.txt)} spids:[67])]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:left_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/right.txt)}
                  spids: [84]
                )
              ]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:right_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/left.txt)} {(_tmp/right.txt)})]
                          negated: True
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(FAIL)}) (C {(exit)} {(1)})]
                  spids: [16777215 116]
                )
              ]
              spids: [16777215 129]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(test)} {($ VSub_Name '$left_status')} {(KW_Bang '!') (Lit_Other '=')} 
                          {($ VSub_Name '$right_status')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('FAIL: Got status ') ($ VSub_Name '$right_status') (' but expected ') 
                          ($ VSub_Name '$left_status')
                        )
                      }
                    )
                    (C {(exit)} {(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: configure
      body: (BraceGroup children:[(C {(_compare)} {(./configure)})] spids:[281])
      spids: [277 280]
    )
    (FuncDef
      name: no-op
      body: (BraceGroup children:[(C {(_compare)} {(scripts/count.sh)})] spids:[295])
      spids: [291 294]
    )
    (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: [314]
                )
              ]
              spids: [312]
            )
            (C {(_compare)} {(build/actions.sh)} {(gen-module-init)} {($ VSub_Name '$modules')})
          ]
          spids: [309]
        )
      spids: [305 308]
    )
    (FuncDef
      name: wild
      body: 
        (BraceGroup
          children: [(C {(_compare)} {(test/wild.sh)} {(all)} {(SQ <'^distro/usr-bin'>)})]
          spids: [335]
        )
      spids: [331 334]
    )
    (FuncDef
      name: startup-benchmark
      body: 
        (BraceGroup
          children: [(C {(_compare)} {(benchmarks/startup.sh)} {(compare-strace)})]
          spids: [370]
        )
      spids: [366 369]
    )
    (FuncDef
      name: glob
      body: (BraceGroup children:[(C {(_compare)} {(gold/glob.sh)})] spids:[386])
      spids: [382 385]
    )
    (FuncDef
      name: nix
      body: 
        (BraceGroup
          children: [(C {(_compare)} {(gold/nix.sh)} {(isElfSimpleWithStdin)})]
          spids: [400]
        )
      spids: [396 399]
    )
    (FuncDef
      name: readonly_
      body: (BraceGroup children:[(C {(_compare)} {(gold/readonly.sh)})] spids:[416])
      spids: [412 415]
    )
    (FuncDef
      name: complex-here-docs
      body: (BraceGroup children:[(C {(_compare)} {(gold/complex-here-docs.sh)})] spids:[430])
      spids: [426 429]
    )
    (FuncDef
      name: comments
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(gold/comments.sh)}) terminator:<Op_Semi ';'>)]
          spids: [444]
        )
      spids: [440 443]
    )
    (FuncDef
      name: export
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(gold/export.sh)}) terminator:<Op_Semi ';'>)]
          spids: [457]
        )
      spids: [453 456]
    )
    (FuncDef
      name: dollar-sq
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(gold/dollar-sq.sh)}) terminator:<Op_Semi ';'>)]
          spids: [473]
        )
      spids: [469 472]
    )
    (FuncDef
      name: declare
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(_compare)} {(gold/declare.sh)} {(demo)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [490]
        )
      spids: [486 489]
    )
    (FuncDef
      name: scope
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(_compare)} {(gold/scope.sh)}) terminator:<Op_Semi ';'>)]
          spids: [509]
        )
      spids: [505 508]
    )
    (Assignment
      keyword: Assign_Readonly
      flags: [-a]
      pairs: [
        (assign_pair
          lhs: (LhsName name:PASSING)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                words: [
                  {(comments)}
                  {(readonly_)}
                  {(count)}
                  {(one-spec-test)}
                  {(html-summary)}
                  {(configure)}
                  {(no-op)}
                  {(gen-module-init)}
                  {(glob)}
                  {(complex-here-docs)}
                  {(wild)}
                ]
              )
            }
          spids: [524]
        )
      ]
      spids: [520]
    )
    (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: [604 609]
                    )
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {($ VSub_Name '$t')}) (C {(echo)} {(DQ ('OK  ') ($ VSub_Name '$t'))})]
                  spids: [613 631]
                )
              spids: [602 611]
            )
            (C {(echo)})
            (C {(echo)} {(DQ ('All gold tests passed.'))})
          ]
          spids: [594]
        )
      spids: [590 593]
    )
    (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:[656])]
              spids: [654]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$out_dir')})
            (Pipeline
              children: [(C {(all-passing)}) (C {(tee)} {($ VSub_Name '$out_dir') (/log.txt)})]
              negated: False
            )
            (C {(echo)} {(DQ ('Wrote ') ($ VSub_Name '$out_dir') (/log.txt))})
          ]
          spids: [651]
        )
      spids: [647 650]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)