(command.CommandList
  children: [
    (C {<set>} {<-o>} {<nounset>})
    (C {<set>} {<-o>} {<pipefail>})
    (C {<set>} {<-o>} {<errexit>})
    (C {<readonly>} 
      {<Id.Lit_VarLike 'DASH='> 
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          child: 
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{<which>} {<dash>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (C {<echo>} {<'/bin/sh'>})
              ]
            )
        )
      }
    )
    (C {<readonly>} 
      {<Id.Lit_VarLike 'BASH='> 
        (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<which>} {<bash>}))
      }
    )
    (C {<readonly>} 
      {<Id.Lit_VarLike 'MKSH='> 
        (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<which>} {<mksh>}))
      }
    )
    (C {<readonly>} 
      {<Id.Lit_VarLike 'ZSH='> 
        (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<which>} {<zsh>}))
      }
    )
    (C {<readonly>} {<Id.Lit_VarLike 'BUSYBOX_ASH='> <'_tmp/shells/ash'>})
    (C {<readonly>} 
      {<Id.Lit_VarLike 'OSH_PYTHON='> 
        (braced_var_sub
          token: <Id.VSub_Name OSH_PYTHON>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_ColonHyphen ':-'>
              arg_word: {<bin> <Id.Lit_Slash '/'> <osh>}
            )
        )
      }
    )
    (C {<readonly>} 
      {<Id.Lit_VarLike 'OSH_OVM='> 
        (braced_var_sub
          token: <Id.VSub_Name OSH_OVM>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_ColonHyphen ':-'>
              arg_word: {<_bin> <Id.Lit_Slash '/'> <osh>}
            )
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {<-e>} {($ Id.VSub_DollarName '$OSH_OVM')})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<readonly>} 
              {<Id.Lit_VarLike 'OSH='> 
                (DQ ($ Id.VSub_DollarName '$OSH_PYTHON') <' '> ($ Id.VSub_DollarName '$OSH_OVM'))
              }
            )
          ]
          spids: [106 115]
        )
      ]
      else_action: [(C {<readonly>} {<Id.Lit_VarLike 'OSH='> (DQ ($ Id.VSub_DollarName '$OSH_PYTHON'))})]
    )
    (C {<readonly>} 
      {<Id.Lit_VarLike 'REF_SHELLS='> 
        (sh_array_literal
          left: <Id.Op_LParen _>
          words: [
            {($ Id.VSub_DollarName '$DASH')}
            {($ Id.VSub_DollarName '$BASH')}
            {($ Id.VSub_DollarName '$MKSH')}
          ]
        )
      }
    )
    (command.ShFunction
      name: link-busybox-ash
      body: 
        (BraceGroup
          children: [
            (C {<mkdir>} {<-p>} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<dirname>} {($ Id.VSub_DollarName '$BUSYBOX_ASH')})
                )
              }
            )
            (C {<ln>} {<-s>} {<-f>} {<--verbose>} 
              {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<which>} {<busybox>})))} {($ Id.VSub_DollarName '$BUSYBOX_ASH')}
            )
          ]
        )
    )
    (command.ShFunction
      name: install-shells
      body: 
        (BraceGroup
          children: [
            (C {<sudo>} {<apt-get>} {<install>} {<busybox-static>} {<mksh>} {<zsh>})
            (C {<link-busybox-ash>})
          ]
        )
    )
    (command.ShFunction
      name: check-shells
      body: 
        (BraceGroup
          children: [
            (command.ForEach
              iter_names: [sh]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name REF_SHELLS>
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                        )
                      )
                    }
                    {($ Id.VSub_DollarName '$ZSH')}
                    {($ Id.VSub_DollarName '$OSH')}
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<-e>} {($ Id.VSub_DollarName '$sh')})
                        (BraceGroup
                          children: [
                            (command.Sentence
                              child: 
                                (C {<echo>} 
                                  {(DQ <'ERROR: '> ($ Id.VSub_DollarName '$sh') <' does not exist'>)}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (command.ControlFlow token:<Id.ControlFlow_Break break>)
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<-x>} {($ Id.VSub_DollarName '$sh')})
                        (BraceGroup
                          children: [
                            (command.Sentence
                              child: 
                                (C {<echo>} 
                                  {
                                    (DQ <'ERROR: '> ($ Id.VSub_DollarName '$sh') <' isn\'t executable'>)
                                  }
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (command.ControlFlow token:<Id.ControlFlow_Break break>)
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: _wget
      body: 
        (BraceGroup
          children: [
            (C {<wget>} {<--no-clobber>} {<--directory>} {<'_tmp/src'>} {(DQ ($ Id.VSub_At '$@'))})
          ]
        )
    )
    (command.ShFunction
      name: download-shell-source
      body: 
        (BraceGroup
          children: [
            (C {<mkdir>} {<-p>} {<'_tmp/src'>})
            (C {<_wget>} {<https> <Id.Lit_Colon ':'> <'//ftp.gnu.org/gnu/bash/bash-4.4.tar.gz'>})
            (C {<_wget>} 
              {<https> <Id.Lit_Colon ':'> <'//www.mirbsd.org/MirOS/dist/mir/mksh/mksh-R54.tgz'>}
            )
            (C {<_wget>} 
              {<https> <Id.Lit_Colon ':'> 
                <'//downloads.sourceforge.net/project/zsh/zsh/5.3.1/zsh-5.3.1.tar.xz'>
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: maybe-show
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'path='> ($ Id.VSub_Number '$1')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-e>} {($ Id.VSub_DollarName '$path')})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {(DQ <'--- '> ($ Id.VSub_DollarName '$path') <' ---'>)})
                    (C {<cat>} {($ Id.VSub_DollarName '$path')})
                    (C {<echo>})
                  ]
                  spids: [448 457]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: version-text
      body: 
        (BraceGroup
          children: [
            (C {<date>})
            (C {<echo>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-d>} {<.git>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'branch='> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<git>} {<rev-parse>} {<--abbrev-ref>} {<HEAD>})
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'hash='> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<git>} {<rev-parse>} {($ Id.VSub_DollarName '$branch')})
                        )
                      }
                    )
                    (C {<echo>} 
                      {
                        (DQ <'oil repo: '> ($ Id.VSub_DollarName '$hash') <' on branch '> 
                          ($ Id.VSub_DollarName '$branch')
                        )
                      }
                    )
                  ]
                  spids: [496 505]
                )
              ]
              else_action: [(C {<echo>} {(DQ <'(not running from git repository)'>)})]
            )
            (C {<echo>})
            (command.ForEach
              iter_names: [bin]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$OSH')}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} 
                      {
                        (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <' '> 
                          ($ Id.VSub_DollarName '$bin') <' --version'>
                        )
                      }
                    )
                    (C {($ Id.VSub_DollarName '$bin')} {<--version>})
                    (C {<echo>})
                  ]
                )
            )
            (command.Simple
              words: [{<python>} {<--version>}]
              redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})]
              do_fork: T
            )
            (C {<echo>})
            (command.Pipeline
              children: [(C {($ Id.VSub_DollarName '$BASH')} {<--version>}) (C {<head>} {<-n>} {<1>})]
              negated: F
            )
            (C {<echo>})
            (command.Pipeline
              children: [(C {($ Id.VSub_DollarName '$ZSH')} {<--version>}) (C {<head>} {<-n>} {<1>})]
              negated: F
            )
            (C {<echo>})
            (command.Pipeline
              children: [(C {<dpkg>} {<-s>} {<dash>}) (C {<egrep>} {(SQ <'^Package|Version'>)})]
              negated: F
            )
            (C {<echo>})
            (command.Pipeline
              children: [(C {<dpkg>} {<-s>} {<mksh>}) (C {<egrep>} {(SQ <'^Package|Version'>)})]
              negated: F
            )
            (C {<echo>})
            (command.Pipeline
              children: [
                (BraceGroup
                  children: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [(C {<busybox>}) (C {<true>})]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
                (C {<head>} {<-n>} {<1>})
              ]
              negated: F
            )
            (C {<echo>})
            (C {<maybe-show>} {<'/etc/debian_version'>})
            (C {<maybe-show>} {<'/etc/lsb-release'>})
          ]
        )
    )
    (command.ShFunction
      name: sh-spec
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'this_dir='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<cd>} 
                          {
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<dirname>} {($ Id.VSub_Number '$0')})
                            )
                          }
                        )
                        (C {<pwd>})
                      ]
                    )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'tmp_env='> ($ Id.VSub_DollarName '$this_dir') <'/../_tmp/spec-tmp'>}
            )
            (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$tmp_env')})
            (C {<'test/sh_spec.py'>} {<--tmp-env>} {($ Id.VSub_DollarName '$tmp_env')} {<--path-env>} 
              {
                (DQ ($ Id.VSub_DollarName '$this_dir') <'/../spec/bin:'> ($ Id.VSub_DollarName '$PATH'))
              } {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: trace-var-sub
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'out='> <'_tmp/coverage'>})
            (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$out')})
            (C {<python>} {<-m>} {<trace>} {<--trackcalls>} {<-C>} {($ Id.VSub_DollarName '$out')} 
              {<'test/sh_spec.py'>} {<'spec/var-sub.test.sh'>} {($ Id.VSub_DollarName '$DASH')} {($ Id.VSub_DollarName '$BASH')} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
            (C {<ls>} {<-l>} {($ Id.VSub_DollarName '$out')})
            (C {<head>} {($ Id.VSub_DollarName '$out') <'/'> <Id.Lit_Star '*'> <.cover>})
          ]
        )
    )
    (command.ShFunction
      name: all
      body: 
        (BraceGroup
          children: [(C {<'test/spec-runner.sh'>} {<all-parallel>} {(DQ ($ Id.VSub_At '$@'))})]
        )
    )
    (command.ShFunction
      name: smoke
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/smoke.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: osh-only
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/osh-only.test.sh'>} {($ Id.VSub_DollarName '$OSH')} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: bugs
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/bugs.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: blog1
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/blog1.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: blog2
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/blog2.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: blog-other1
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/blog-other1.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: alias
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/alias.test.sh'>} {<--osh-failures-allowed>} {<10>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: comments
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/comments.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: word-split
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/word-split.test.sh'>} {<--osh-failures-allowed>} {<2>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: word-eval
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/word-eval.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: assign
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/assign.test.sh'>} {<--osh-failures-allowed>} {<3>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: background
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/background.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: subshell
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/subshell.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: quote
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/quote.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: loop
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/loop.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: case_
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/case_.test.sh'>} {<--osh-failures-allowed>} {<2>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: if_
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/if_.test.sh'>} {<--osh-failures-allowed>} {<1>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: builtins
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/builtins.test.sh'>} {<--osh-failures-allowed>} {<1>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: builtin-io
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/builtin-io.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: builtins2
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/builtins2.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: builtin-dirs
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/builtin-dirs.test.sh'>} {($ Id.VSub_DollarName '$BASH')} 
              {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: builtin-vars
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/builtin-vars.test.sh'>} {<--osh-failures-allowed>} {<2>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: builtin-getopts
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/builtin-getopts.test.sh'>} {<--osh-failures-allowed>} {<1>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: builtin-test
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/builtin-test.test.sh'>} {<--osh-failures-allowed>} {<1>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: builtin-trap
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/builtin-trap.test.sh'>} {<--osh-failures-allowed>} {<3>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: builtin-bash
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/builtin-bash.test.sh'>} {($ Id.VSub_DollarName '$BASH')} 
              {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: builtins-special
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/builtins-special.test.sh'>} {<--osh-failures-allowed>} {<3>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: command-parsing
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/command-parsing.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: func-parsing
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/func-parsing.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: func
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/func.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: glob
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/glob.test.sh'>} {<--osh-failures-allowed>} {<2>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: arith
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/arith.test.sh'>} {<--osh-failures-allowed>} {<3>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: command-sub
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/command-sub.test.sh'>} {<--osh-failures-allowed>} {<2>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: command_
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/command_.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: pipeline
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/pipeline.test.sh'>} {<--osh-failures-allowed>} {<3>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: explore-parsing
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/explore-parsing.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: parse-errors
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/parse-errors.test.sh'>} {<--osh-failures-allowed>} {<5>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: here-doc
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/here-doc.test.sh'>} {<--osh-failures-allowed>} {<1>} {<--range>} 
              {<0-30>} {(braced_var_sub token:<Id.VSub_Name REF_SHELLS> bracket_op:(bracket_op.WholeArray op_id:Id.Lit_At))} 
              {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: redirect
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/redirect.test.sh'>} {<--osh-failures-allowed>} {<5>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: posix
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/posix.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: special-vars
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/special-vars.test.sh'>} {<--osh-failures-allowed>} {<4>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: introspect
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/introspect.test.sh'>} {<--osh-failures-allowed>} {<3>} 
              {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: tilde
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/tilde.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: var-op-test
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/var-op-test.test.sh'>} {<--osh-failures-allowed>} {<5>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: var-op-other
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/var-op-other.test.sh'>} {<--osh-failures-allowed>} {<2>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: var-op-strip
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/var-op-strip.test.sh'>} {<--osh-failures-allowed>} {<1>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: var-sub
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/var-sub.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: var-num
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/var-num.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: var-sub-quote
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/var-sub-quote.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: sh-options
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/sh-options.test.sh'>} {<--osh-failures-allowed>} {<3>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: xtrace
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/xtrace.test.sh'>} {<--osh-failures-allowed>} {<5>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: strict-options
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/strict-options.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: errexit
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/errexit.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: errexit-strict
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/errexit-strict.test.sh'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name REF_SHELLS>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              } {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: arith-context
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/arith-context.test.sh'>} {<--osh-failures-allowed>} {<3>} 
              {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: array
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/array.test.sh'>} {<--osh-failures-allowed>} {<8>} 
              {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: array-compat
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/array-compat.test.sh'>} {<--osh-failures-allowed>} {<7>} 
              {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: type-compat
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/type-compat.test.sh'>} {($ Id.VSub_DollarName '$BASH')} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: append
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/append.test.sh'>} {<--osh-failures-allowed>} {<4>} 
              {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: assoc
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/assoc.test.sh'>} {($ Id.VSub_DollarName '$BASH')} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: assoc-zsh
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/assoc-zsh.test.sh'>} {($ Id.VSub_DollarName '$ZSH')} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: dbracket
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/dbracket.test.sh'>} {<--osh-failures-allowed>} {<2>} 
              {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: dparen
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/dparen.test.sh'>} {($ Id.VSub_DollarName '$BASH')} 
              {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: brace-expansion
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/brace-expansion.test.sh'>} {<--osh-failures-allowed>} {<12>} 
              {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: regex
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/regex.test.sh'>} {<--osh-failures-allowed>} {<3>} 
              {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: process-sub
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/process-sub.test.sh'>} {($ Id.VSub_DollarName '$BASH')} 
              {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: extended-glob
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/extended-glob.test.sh'>} {($ Id.VSub_DollarName '$BASH')} 
              {($ Id.VSub_DollarName '$MKSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: var-ref
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/var-ref.test.sh'>} {<--osh-failures-allowed>} {<5>} 
              {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: let
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/let.test.sh'>} {($ Id.VSub_DollarName '$BASH')} 
              {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$ZSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: for-expr
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/for-expr.test.sh'>} {($ Id.VSub_DollarName '$MKSH')} 
              {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: shell-grammar
      body: 
        (BraceGroup
          children: [
            (C {<sh-spec>} {<'spec/shell-grammar.test.sh'>} {($ Id.VSub_DollarName '$BASH')} 
              {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$ZSH')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)