(command.CommandList
  children: [
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<nounset>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<pipefail>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<errexit>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <source>
      more_env: []
      words: [{<source>} {<'test/common.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <osh-to-oil>
      name: osh-to-oil
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <Id.VSub_DollarName '$OSH'>
              more_env: []
              words: [{($ Id.VSub_DollarName OSH)} {<--fix>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <osh0-oil3>
      name: osh0-oil3
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Pipeline
                  children: [
                    (command.Simple
                      blame_tok: <osh-to-oil>
                      more_env: []
                      words: [{<osh-to-oil>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <diff>
                      more_env: []
                      words: [{<diff>} {<-u>} {<'/dev/fd/3'>} {<->}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_Pipe _>]
                )
                (command.Simple
                  blame_tok: <fail>
                  more_env: []
                  words: [{<fail>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <args-vars>
      name: args-vars
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo one "$@" two\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo one @Argv two\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo one $* "__$*__" $@ two\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'echo one $ifsjoin(Argv) "__$ifsjoin(Argv)__" $ifsjoin(Argv) two\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $? $#\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $Status $Argc\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <unquote-subs>
      name: unquote-subs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo "$1" "$foo"\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $1 $foo\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo "${foo}"\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $(foo)\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo "$(echo hi)"\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $[echo hi]\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <special-vars>
      name: special-vars
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo ${?} ${#} ${@}\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $(Status) $(len(Argv)) @Argv\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $9 $10 ${10} ${11}\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $9 $10 $10 $11   # Rule is changed\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <arg-array>
      name: arg-array
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $@ $* "$@" "$*" "__$@__" "__$*__"\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $Status $len(Argv) @Argv\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <bracket-ops>
      name: bracket-ops
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo ${a[1]} ${a[@]} ${PIPESTATUS[@]} ${BASH_REMATCH[@]}\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $a[1] @a $PipeStatus @Match\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <prefix-ops>
      name: prefix-ops
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo ${#s} ${#a[@]}\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $len(s) $len(a)\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <suffix-ops>
      name: suffix-ops
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo ${s:-3} ${s##suffix}\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $(s or 3) $s.trimRight(\'suffix\')\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <slice>
      name: slice
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo ${a:1:2} ${a[@]:1:2}\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $a[1:3] @a[1:3]\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <patsub>
      name: patsub
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo ${s/foo/bar} ${s//foo/bar}\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'echo $s.replace(\'foo\', \'bar\') $s.replace(\'foo\', \'bar\', :ALL)\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <simple-command>
      name: simple-command
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo hi\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo hi\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <line-breaks>
      name: line-breaks
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo one \\\n'> <'  two three \\\n'> <'  four\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo one \\\n'> <'  two three \\\n'> <'  four\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <bracket-builtin>
      name: bracket-builtin
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'[ ! -z "$foo" ] || die\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'test ! -z $foo || die\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'if [ "$foo" -eq 3 ]; then\n'> <'  echo yes\n'> <'fi\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'if test $foo -eq 3 {\n'> <'  echo yes\n'> <'}\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <builtins>
      name: builtins
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'. lib.sh\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'source lib.sh\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'[ -f lib.sh ] && . lib.sh\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'test -f lib.sh && source lib.sh\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'set -o errexit\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'setoption +errexit\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo \'\\n\'\n'> <'echo -e \'\\n\'\n'> <'echo -e -n \'\\n\'\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo \'\\\\n\'\n'> <'echo \'\\n\'\n'> <'write \'\\n\'\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'eval \'echo $?\'\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'oshEval(\'echo $?\')  # call into osh!\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'exec 1>&2  # stdout to stderr from now on\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'redir !1 > !2\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <export-readonly>
      name: export-readonly
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'export FOO\n'> <'export BAR=bar\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'setenv FOO\n'> <'BAR = \'bar\'\n'> <'setenv BAR\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'readonly FOO\n'> <'readonly BAR=bar\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'freeze FOO\n'> <'BAR = \'bar\'\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <redirect>
      name: redirect
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'cat >out.txt <in.txt\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'cat >out.txt <in.txt\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'cat >out.txt 2> err.txt\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'cat >out.txt !2 > err.txt\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo "error message" >& 2 \n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo "error message" > !2 \n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo "error message" 1>&2 \n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo "error message" !1 > !2 \n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'cat >${out} <${in}\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'cat >$(out) <$(in)\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <here-doc>
      name: here-doc
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'cat <<ONE\n'> <'echo $hi\n'> <'ONE\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'cat << """\n'> <'echo $hi\n'> <'"""\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'cat <<\'ONE\'\n'> <'single quoted\n'> <'ONE\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'cat << \'\'\'\n'> <'single quoted\n'> <'\'\'\'\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <more-env>
      name: more-env
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo 1\n'> <'FOO=bar BAR=baz echo 2\n'> <'echo 2\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo 1\n'> <'env FOO=bar BAR=baz echo 2\n'> <'echo 2\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'FOO="${bar}" BAR="$(echo hi)" echo 2\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'env FOO=$(bar) BAR=$[echo hi] echo 2\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <assign-common>
      name: assign-common
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh-to-oil>
              more_env: []
              words: [{<osh-to-oil>} {<--fix>} {<-c>} {(SQ <'foo=bar spam="$var"'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh-to-oil>
              more_env: []
              words: [{<osh-to-oil>} {<--fix>} {<-c>} {(SQ <'readonly foo=bar spam="${var}"'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh-to-oil>
              more_env: []
              words: [{<osh-to-oil>} {<--fix>} {<-c>} {(SQ <'export foo=bar spam="${var}/const"'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh-to-oil>
              more_env: []
              words: [{<osh-to-oil>} {<--fix>} {<-c>} {(SQ <'f() { foo=bar spam=${var:-default}; }'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh-to-oil>
              more_env: []
              words: [
                {<osh-to-oil>}
                {<--fix>}
                {<-c>}
                {(SQ <'f() { local foo=bar spam=eggs; foo=mutated; g=new; }'>)}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <assign>
      name: assign
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'local foo=$(basename $1)\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'var foo = $[basename $1]\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'local one=1 two three=3\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'one = \'1\', two = \'\', three = \'3\'\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'myStr=one\n'> <'readonly myConstStr=two\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'var myStr = \'hi\'\n'> <'myConstStr = \'hi\'\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'f() {\n'>
                        <'  local myStr=one\n'>
                        <'  readonly myConstStr=two\n'>
                        <'}\n'>
                      ]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'proc f {\n'>
                        <'  var myStr = \'hi\'\n'>
                        <'  myConstStr = \'hi\'\n'>
                        <'}\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'f() {\n'>
                        <'  local myStr=$1\n'>
                        <'  readonly myConstStr=$((1 + 2))\n'>
                        <'}\n'>
                      ]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'proc f {\n'>
                        <'  var myStr = $1\n'>
                        <'  myConstStr = $(1 + 2)\n'>
                        <'}\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <array-literal>
      name: array-literal
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'a=(1 2 3)\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'var a = [1 2 3]\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <pipeline>
      name: pipeline
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'ls | sort | uniq -c | sort -n -r\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'ls | sort | uniq -c | sort -n -r\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'! echo hi | wc\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'not -- echo hi | wc\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <and-or>
      name: and-or
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'ls && echo "$@" || die "foo"\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'ls && echo @Argv || die "foo"\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <posix-func>
      name: posix-func
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'func1() {\n'>
                        <'  echo func1\n'>
                        <'  func2()\n'>
                        <'  {\n'>
                        <'    echo func2\n'>
                        <'  }\n'>
                        <'}\n'>
                      ]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'proc func1 {\n'>
                        <'  echo func1\n'>
                        <'  proc func2\n'>
                        <'  {\n'>
                        <'    echo func2\n'>
                        <'  }\n'>
                        <'}\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <subshell-func>
      name: subshell-func
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'subshell-func() (\n'> <'  echo subshell\n'> <')\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'proc subshell-func {\n'>
                        <'  shell { \n'>
                        <'    echo subshell\n'>
                        <'  }\n'>
                        <'}\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <ksh-func>
      name: ksh-func
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'function func1 {  # no parens\n'>
                        <'  echo func1\n'>
                        <'  function func2()\n'>
                        <'  {\n'>
                        <'    echo func2\n'>
                        <'  }\n'>
                        <'}\n'>
                      ]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'proc func1 {  # no parens\n'>
                        <'  echo func1\n'>
                        <'  proc func2\n'>
                        <'  {\n'>
                        <'    echo func2\n'>
                        <'  }\n'>
                        <'}\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <for-loop>
      name: for-loop
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'for x in a b c \\\n'> <'  d e f; do\n'> <'  echo $x\n'> <'done\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'for x in [a b c \\\n'> <'  d e f] {\n'> <'  echo $x\n'> <'}\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'for x in a b c \\\n'>
                        <'  d e f\n'>
                        <'do\n'>
                        <'  echo $x\n'>
                        <'done\n'>
                      ]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'for x in [a b c \\\n'>
                        <'  d e f]\n'>
                        <'{\n'>
                        <'  echo $x\n'>
                        <'}\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <empty-for-loop>
      name: empty-for-loop
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'for x in \n'> <'do\n'> <'  echo $x\n'> <'done\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'for x in []\n'> <'{\n'> <'  echo $x\n'> <'}\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <args-for-loop>
      name: args-for-loop
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'for x; do\n'> <'  echo $x\n'> <'done\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'for x in @Argv {\n'> <'  echo $x\n'> <'}\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'for x\n'> <'do\n'> <'  echo $x\n'> <'done\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'for x in @Argv\n'> <'{\n'> <'  echo $x\n'> <'}\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <while-loop>
      name: while-loop
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'while read line; do\n'> <'  echo $line\n'> <'done\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'while read line {\n'> <'  echo $line\n'> <'}\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'while read \\\n'> <'  line; do\n'> <'  echo $line\n'> <'done\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'while read \\\n'> <'  line {\n'> <'  echo $line\n'> <'}\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <if_>
      name: if_
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'if true; then\n'> <'  echo yes\n'> <'fi\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'if true {\n'> <'  echo yes\n'> <'}\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'if true\n'> <'then\n'> <'  echo yes\n'> <'fi\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'if true\n'> <'{\n'> <'  echo yes\n'> <'}\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'if true; then\n'>
                        <'  echo yes\n'>
                        <'elif false; then\n'>
                        <'  echo elif\n'>
                        <'elif spam; then\n'>
                        <'  echo elif\n'>
                        <'else\n'>
                        <'  echo no\n'>
                        <'fi\n'>
                      ]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'if true {\n'>
                        <'  echo yes\n'>
                        <'} elif false {\n'>
                        <'  echo elif\n'>
                        <'} elif spam {\n'>
                        <'  echo elif\n'>
                        <'} else {\n'>
                        <'  echo no\n'>
                        <'}\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <case_>
      name: case_
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'case $var in\n'>
                        <'  foo|bar)\n'>
                        <'    [ -f foo ] && echo file\n'>
                        <'    ;;\n'>
                        <'  *)\n'>
                        <'    echo default\n'>
                        <'    ;;\n'>
                        <'esac\n'>
                      ]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'matchstr $var {\n'>
                        <'  foo|bar {\n'>
                        <'    test -f foo && echo file\n'>
                        <'    }\n'>
                        <'  * {\n'>
                        <'    echo default\n'>
                        <'    }\n'>
                        <'}\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'case "$var" in\n'>
                        <'  *)\n'>
                        <'    echo foo\n'>
                        <'    echo bar  # no dsemi\n'>
                        <'esac\n'>
                      ]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'matchstr $var {\n'>
                        <'  * {\n'>
                        <'    echo foo\n'>
                        <'    echo bar  # no dsemi\n'>
                        <'    }\n'>
                        <'}\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <subshell>
      name: subshell
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'(echo hi;)\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'shell {echo hi;}\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'(echo hi)\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'shell {echo hi}\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'(echo hi; echo bye)\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'shell {echo hi; echo bye}\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'( (echo hi; echo bye ) )\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'shell { shell {echo hi; echo bye } }\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <brace-group>
      name: brace-group
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'{ echo hi; }\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'do { echo hi; }\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'{ echo hi; echo bye; }\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'do { echo hi; echo bye; }\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fork>
      name: fork
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'sleep 1&\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'fork sleep 1\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <var-sub>
      name: var-sub
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $foo\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $foo\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $foo ${bar} "__${bar}__"\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $foo $(bar) "__$(bar)__"\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo ${foo:-default}\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $(foo or \'default\')\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <command-sub>
      name: command-sub
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $(echo hi)\n'> <'echo `echo hi`\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $[echo hi]\n'> <'echo $[echo hi]\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo "__$(echo hi)__"\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo "__$[echo hi]__"\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <proc-sub>
      name: proc-sub
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo <(echo hi) >(echo hi)\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $<[echo hi] $>[echo hi]\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <arith-sub>
      name: arith-sub
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo __$((  1+ 2 ))__\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo __$(  1+ 2 )__\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $[  1+ 2 ]\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $(  1+ 2 )\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <arith-ops>
      name: arith-ops
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $(( a > 0 ? 2**3 : 3/2 ))\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $(( 2^3 if a > 0 else 3 div 2 ))\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $(( a << 1 | b & 1 ))\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo $(( a << 1 .| b .& 1 ))\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <dbracket>
      name: dbracket
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'[[ -d / ]] && echo "is dir"\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'isDir(\'/\') && echo "is dir"\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <escaped-literal>
      name: escaped-literal
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo \\$  \\  \\n "\\$" "\\n"\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo \'$\'  \' \' \'n\' "\\$" "\\n"\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo \\$\\ \\$\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo \'$ $\'\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo \\\n'> <'  hi\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo \\\n'> <'  hi\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <words>
      name: words
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo foo\'bar\'\n'> <'echo foo\'bar\'$baz\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo \'foobar\'\n'> <'echo "foobar$baz"\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo ~/\'name with spaces\'\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'echo "$HOME/name with spaces"\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <time-block>
      name: time-block
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'time ls\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'time ls\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'time while false; do\n'> <'  echo $i\n'> <'done\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'time while false {\n'> <'  echo $i\n'> <'}\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
            (command.Simple
              blame_tok: <osh0-oil3>
              more_env: []
              words: [{<osh0-oil3>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OSH>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'time {\n'> <'  echo one\n'> <'  echo two\n'> <'}\n'>]
                    )
                )
                (Redir
                  op: <Id.Redir_DLess '3<<'>
                  loc: (redir_loc.Fd fd:3)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <OIL>)}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'time {\n'> <'  echo one\n'> <'  echo two\n'> <'}\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [
        {<readonly>}
        {<-a>}
        {<Id.Lit_VarLike 'PASSING='> 
          (ShArrayLiteral
            left: <Id.Op_LParen _>
            words: [
              {<simple-command>}
              {<more-env>}
              {<line-breaks>}
              {<redirect>}
              {<pipeline>}
              {<and-or>}
              {<escaped-literal>}
              {<args-vars>}
              {<unquote-subs>}
              {<command-sub>}
              {<arith-sub>}
              {<unquote-subs>}
              {<posix-func>}
              {<ksh-func>}
              {<brace-group>}
              {<subshell>}
              {<while-loop>}
              {<if_>}
              {<case_>}
              {<for-loop>}
              {<empty-for-loop>}
              {<args-for-loop>}
              {<time-block>}
              {<bracket-builtin>}
            ]
            right: <Id.Right_ShArrayLiteral _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <all-passing>
      name: all-passing
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <run-all>
              more_env: []
              words: [
                {<run-all>}
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name PASSING>
                      var_name: PASSING
                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <run-for-release>
      name: run-for-release
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'out_dir='> <'_tmp/osh2oil'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out_dir)}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <all-passing>
                  more_env: []
                  words: [{<all-passing>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <tee>
                  more_env: []
                  words: [{<tee>} {($ Id.VSub_DollarName out_dir) <'/log.txt'>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Wrote '> ($ Id.VSub_DollarName out_dir) <'/log.txt'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <Id.Left_DoubleQuote '"'>
      more_env: []
      words: [{(DQ ($ Id.VSub_At '@'))}]
      redirects: []
      do_fork: T
    )
  ]
)