(command.CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (C {(source)} {(test/common.sh)})
    (command.FuncDef
      name: _compare
      body: 
        (command.BraceGroup
          children: [
            (C {(set)} {(Lit_Other '+') (o)} {(errexit)})
            (command.SimpleCommand
              words: [{(DQ ($ VSub_At '$@'))}]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(_tmp/shebang.txt)})]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:expected_status spids:[81])
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [81]
                )
              ]
              spids: [79]
            )
            (command.SimpleCommand
              words: [{($ VSub_DollarName '$OSH')} {(DQ ($ VSub_At '$@'))}]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(_tmp/osh.txt)})]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:osh_status spids:[98])
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [98]
                )
              ]
              spids: [96]
            )
            (C {(set)} {(-o)} {(errexit)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [(C {(diff)} {(-u)} {(_tmp/shebang.txt)} {(_tmp/osh.txt)})]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(FAIL)})
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [16777215 124]
                )
              ]
              spids: [16777215 137]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {($ VSub_DollarName '$expected_status')} 
                          {(KW_Bang '!') (Lit_Other '=')} {($ VSub_DollarName '$osh_status')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('FAIL: Got status ') ($ VSub_DollarName '$osh_status') (' but expected ') 
                          ($ VSub_DollarName '$expected_status')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [16777215 153]
                )
              ]
              spids: [16777215 171]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [59]
        )
      spids: [55 58]
    )
    (command.FuncDef
      name: version-text
      body: 
        (command.BraceGroup
          children: [(C {(_compare)} {(test/spec.sh)} {(version-text)})]
          spids: [195]
        )
      spids: [191 194]
    )
    (command.FuncDef
      name: count
      body: 
        (command.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: [214]
        )
      spids: [210 213]
    )
    (command.FuncDef
      name: one-spec-test
      body: 
        (command.BraceGroup
          children: [(C {(_compare)} {(test/spec.sh)} {(builtins-special)})]
          spids: [254]
        )
      spids: [250 253]
    )
    (command.FuncDef
      name: html-summary
      body: 
        (command.BraceGroup
          children: [(C {(_compare)} {(test/spec-runner.sh)} {(html-summary)})]
          spids: [273]
        )
      spids: [269 272]
    )
    (command.FuncDef
      name: gen-module-init
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:modules spids:[294])
                  op: Equal
                  rhs: {(SQ <'time datetime'>)}
                  spids: [294]
                )
              ]
              spids: [292]
            )
            (C {(_compare)} {(build/actions.sh)} {(gen-module-init)} {($ VSub_DollarName '$modules')})
          ]
          spids: [289]
        )
      spids: [285 288]
    )
    (command.FuncDef
      name: wild
      body: 
        (command.BraceGroup
          children: [(C {(_compare)} {(test/wild.sh)} {(all)} {(SQ <'^distro/usr-bin'>)})]
          spids: [315]
        )
      spids: [311 314]
    )
    (command.FuncDef
      name: startup-benchmark
      body: 
        (command.BraceGroup
          children: [(C {(_compare)} {(benchmarks/startup.sh)} {(compare-strace)})]
          spids: [350]
        )
      spids: [346 349]
    )
    (command.FuncDef
      name: configure
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(./configure)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [366]
        )
      spids: [362 365]
    )
    (command.FuncDef
      name: nix
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/nix.sh)} {(isElfSimpleWithStdin)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [379]
        )
      spids: [375 378]
    )
    (command.FuncDef
      name: and-or
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/and-or.sh)} {(test-simple)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [394]
        )
      spids: [390 393]
    )
    (command.FuncDef
      name: comments
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/comments.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [410]
        )
      spids: [406 409]
    )
    (command.FuncDef
      name: readonly_
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/readonly.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [423]
        )
      spids: [419 422]
    )
    (command.FuncDef
      name: export
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/export.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [436]
        )
      spids: [432 435]
    )
    (command.FuncDef
      name: glob
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/glob.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [449]
        )
      spids: [445 448]
    )
    (command.FuncDef
      name: no-op
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(scripts/count.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [462]
        )
      spids: [458 461]
    )
    (command.FuncDef
      name: complex-here-docs
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/complex-here-docs.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [475]
        )
      spids: [471 474]
    )
    (command.FuncDef
      name: strip-op-char-class
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/strip-op-char-class.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [489]
        )
      spids: [485 488]
    )
    (command.FuncDef
      name: echo-e
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/echo-e.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [506]
        )
      spids: [502 505]
    )
    (command.FuncDef
      name: dollar-sq
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/dollar-sq.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [519]
        )
      spids: [515 518]
    )
    (command.FuncDef
      name: word-eval
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/word-eval.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [532]
        )
      spids: [528 531]
    )
    (command.FuncDef
      name: abuild
      body: 
        (command.BraceGroup
          children: [(C {(_compare)} {(gold/abuild.sh)} {(is_function)} {(is_function)})]
          spids: [546]
        )
      spids: [542 545]
    )
    (command.FuncDef
      name: declare
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/declare.sh)} {(demo)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [567]
        )
      spids: [563 566]
    )
    (command.FuncDef
      name: scope
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_compare)} {(gold/scope.sh)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [586]
        )
      spids: [582 585]
    )
    (command.Assignment
      keyword: Assign_Readonly
      flags: [-a]
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:PASSING spids:[601])
          op: Equal
          rhs: 
            {
              (word_part.ArrayLiteralPart
                words: [
                  {(configure)}
                  {(nix)}
                  {(and-or)}
                  {(comments)}
                  {(readonly_)}
                  {(export)}
                  {(glob)}
                  {(no-op)}
                  {(complex-here-docs)}
                  {(echo-e)}
                  {(dollar-sq)}
                  {(word-eval)}
                  {(strip-op-char-class)}
                  {(abuild)}
                  {(count)}
                  {(one-spec-test)}
                  {(html-summary)}
                  {(gen-module-init)}
                ]
              )
            }
          spids: [601]
        )
      ]
      spids: [597]
    )
    (command.FuncDef
      name: all-passing
      body: 
        (command.BraceGroup
          children: [
            (C {(run-all)} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name PASSING>
                    bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                    spids: [706 711]
                  )
                )
              }
            )
          ]
          spids: [700]
        )
      spids: [696 699]
    )
    (command.FuncDef
      name: run-for-release
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:out_dir spids:[726])
                  op: Equal
                  rhs: {(_tmp/gold)}
                  spids: [726]
                )
              ]
              spids: [724]
            )
            (C {(mkdir)} {(-p)} {($ VSub_DollarName '$out_dir')})
            (command.Pipeline
              children: [(C {(all-passing)}) (C {(tee)} {($ VSub_DollarName '$out_dir') (/log.txt)})]
              negated: F
            )
            (C {(echo)} {(DQ ('Wrote ') ($ VSub_DollarName '$out_dir') (/log.txt))})
          ]
          spids: [721]
        )
      spids: [717 720]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)