(command.CommandList
  children: [
    (C {<set>} {<-o>} {<nounset>})
    (C {<set>} {<-o>} {<pipefail>})
    (C {<set>} {<-o>} {<errexit>})
    (C {<source>} {<'test/common.sh'>})
    (command.ShFunction
      name: _compare
      body: 
        (BraceGroup
          children: [
            (C {<set>} {<Id.Lit_Other '+'> <o>} {<errexit>})
            (command.Simple
              words: [{(DQ ($ Id.VSub_At '$@'))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_tmp/shebang.txt'>}
                )
              ]
              do_fork: T
            )
            (C {<local>} {<Id.Lit_VarLike 'expected_status='> ($ Id.VSub_QMark '$?')})
            (command.Simple
              words: [{($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_tmp/osh.txt'>}
                )
              ]
              do_fork: T
            )
            (C {<local>} {<Id.Lit_VarLike 'osh_status='> ($ Id.VSub_QMark '$?')})
            (C {<set>} {<-o>} {<errexit>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [(C {<diff>} {<-u>} {<'_tmp/shebang.txt'>} {<'_tmp/osh.txt'>})]
                              negated: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {<FAIL>})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [111 124]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {($ Id.VSub_DollarName '$expected_status')} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$osh_status')}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} 
                      {
                        (DQ <'FAIL: Got status '> ($ Id.VSub_DollarName '$osh_status') 
                          <' but expected '> ($ Id.VSub_DollarName '$expected_status')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [141 153]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: version-text
      body: (BraceGroup children:[(C {<_compare>} {<'test/spec.sh'>} {<version-text>})])
    )
    (command.ShFunction
      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>})
          ]
        )
    )
    (command.ShFunction
      name: one-spec-test
      body: (BraceGroup children:[(C {<_compare>} {<'test/spec.sh'>} {<builtins-special>})])
    )
    (command.ShFunction
      name: html-summary
      body: (BraceGroup children:[(C {<_compare>} {<'test/spec-runner.sh'>} {<html-summary>})])
    )
    (command.ShFunction
      name: gen-module-init
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'modules='> (SQ <'time datetime'>)})
            (C {<_compare>} {<'build/actions.sh'>} {<gen-module-init>} 
              {($ Id.VSub_DollarName '$modules')}
            )
          ]
        )
    )
    (command.ShFunction
      name: wild
      body: 
        (BraceGroup
          children: [(C {<_compare>} {<'test/wild.sh'>} {<all>} {(SQ <'^distro/usr-bin'>)})]
        )
    )
    (command.ShFunction
      name: startup-benchmark
      body: (BraceGroup children:[(C {<_compare>} {<'benchmarks/startup.sh'>} {<compare-strace>})])
    )
    (command.ShFunction
      name: configure
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'./configure'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: nix
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/nix.sh'>} {<isElfSimpleWithStdin>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: and-or
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/and-or.sh'>} {<test-simple>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: comments
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/comments.sh'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: readonly_
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/readonly.sh'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: export
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/export.sh'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: glob
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/glob.sh'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: no-op
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'scripts/count.sh'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: complex-here-docs
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/complex-here-docs.sh'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: strip-op-char-class
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/strip-op-char-class.sh'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: echo-e
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/echo-e.sh'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: dollar-sq
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/dollar-sq.sh'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: word-eval
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/word-eval.sh'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: abuild
      body: 
        (BraceGroup
          children: [(C {<_compare>} {<'gold/abuild.sh'>} {<is_function>} {<is_function>})]
        )
    )
    (command.ShFunction
      name: declare
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/declare.sh'>} {<demo>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: scope
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<_compare>} {<'gold/scope.sh'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (C {<readonly>} {<-a>} 
      {<Id.Lit_VarLike 'PASSING='> 
        (sh_array_literal
          left: <Id.Op_LParen _>
          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>}
          ]
        )
      }
    )
    (command.ShFunction
      name: all-passing
      body: 
        (BraceGroup
          children: [
            (C {<run-all>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name PASSING>
                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                  )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: run-for-release
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'out_dir='> <'_tmp/gold'>})
            (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$out_dir')})
            (command.Pipeline
              children: [
                (C {<all-passing>})
                (C {<tee>} {($ Id.VSub_DollarName '$out_dir') <'/log.txt'>})
              ]
              negated: F
            )
            (C {<echo>} {(DQ <'Wrote '> ($ Id.VSub_DollarName '$out_dir') <'/log.txt'>)})
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)