(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (C {(source)} {(test/common.sh)})
    (FuncDef
      name: osh-to-oil
      body: 
        (BraceGroup
          children: [(C {($ VSub_Name '$OSH')} {(--fix)} {(DQ ($ VSub_At '$@'))})]
          spids: [41]
        )
      spids: [37 40]
    )
    (FuncDef
      name: osh0-oil3
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DPipe]
              children: [
                (Pipeline
                  children: [
                    (C {(osh-to-oil)} {(DQ ($ VSub_At '$@'))})
                    (C {(diff)} {(-u)} {(/dev/fd/3)} {(-)})
                  ]
                  negated: F
                )
                (C {(fail)})
              ]
            )
          ]
          spids: [62]
        )
      spids: [58 61]
    )
    (FuncDef
      name: args-vars
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo one "$@" two\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [97]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo one @Argv two\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [103]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo one $* "__$*__" $@ two\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [117]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo one $ifsjoin(Argv) "__$ifsjoin(Argv)__" $ifsjoin(Argv) two\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [123]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo $? $#\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [133]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $Status $Argc\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [139]
                )
              ]
            )
          ]
          spids: [92]
        )
      spids: [88 91]
    )
    (FuncDef
      name: unquote-subs
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo "$1" "$foo"\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [157]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $1 $foo\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [163]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo "${foo}"\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [173]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $(foo)\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [179]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo "$(echo hi)"\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [189]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $[echo hi]\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [195]
                )
              ]
            )
          ]
          spids: [152]
        )
      spids: [148 151]
    )
    (FuncDef
      name: special-vars
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo ${?} ${#} ${@}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [221]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $(Status) $(len(Argv)) @Argv\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [227]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo $9 $10 ${10} ${11}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [246]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $9 $10 $10 $11   # Rule is changed\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [252]
                )
              ]
            )
          ]
          spids: [208]
        )
      spids: [204 207]
    )
    (FuncDef
      name: arg-array
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo $@ $* "$@" "$*" "__$@__" "__$*__"\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [291]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $Status $len(Argv) @Argv\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [297]
                )
              ]
            )
          ]
          spids: [265]
        )
      spids: [261 264]
    )
    (FuncDef
      name: bracket-ops
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo ${a[1]} ${a[@]} ${PIPESTATUS[@]} ${BASH_REMATCH[@]}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [315]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $a[1] @a $PipeStatus @Match\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [321]
                )
              ]
            )
          ]
          spids: [310]
        )
      spids: [306 309]
    )
    (FuncDef
      name: prefix-ops
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo ${#s} ${#a[@]}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [342]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $len(s) $len(a)\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [348]
                )
              ]
            )
          ]
          spids: [337]
        )
      spids: [333 336]
    )
    (FuncDef
      name: suffix-ops
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo ${s:-3} ${s##suffix}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [366]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("echo $(s or 3) $s.trimRight('suffix')\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [372]
                )
              ]
            )
          ]
          spids: [361]
        )
      spids: [357 360]
    )
    (FuncDef
      name: slice
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo ${a:1:2} ${a[@]:1:2}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [390]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $a[1:3] @a[1:3]\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [396]
                )
              ]
            )
          ]
          spids: [385]
        )
      spids: [381 384]
    )
    (FuncDef
      name: patsub
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo ${s/foo/bar} ${s//foo/bar}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [420]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("echo $s.replace('foo', 'bar') $s.replace('foo', 'bar', :ALL)\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [426]
                )
              ]
            )
          ]
          spids: [415]
        )
      spids: [411 414]
    )
    (FuncDef
      name: simple-command
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo hi\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [444]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo hi\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [450]
                )
              ]
            )
          ]
          spids: [439]
        )
      spids: [435 438]
    )
    (FuncDef
      name: line-breaks
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo one \\\n') ('  two three \\\n') ('  four\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [468]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo one \\\n') ('  two three \\\n') ('  four\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [474]
                )
              ]
            )
          ]
          spids: [463]
        )
      spids: [459 462]
    )
    (FuncDef
      name: bracket-builtin
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('[ ! -z "$foo" ] || die\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [492]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('test ! -z $foo || die\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [498]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('if [ "$foo" -eq 3 ]; then\n') ('  echo yes\n') ('fi\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [508]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('if test $foo -eq 3 {\n') ('  echo yes\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [514]
                )
              ]
            )
          ]
          spids: [487]
        )
      spids: [483 486]
    )
    (FuncDef
      name: builtins
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('. lib.sh\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [532]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('source lib.sh\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [538]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('[ -f lib.sh ] && . lib.sh\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [548]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('test -f lib.sh && source lib.sh\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [554]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('set -o errexit\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [580]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('setoption +errexit\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [586]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {("echo '\\n'\n") ("echo -e '\\n'\n") ("echo -e -n '\\n'\n")}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [596]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("echo '\\\\n'\n") ("echo '\\n'\n") ("write '\\n'\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [602]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {("eval 'echo $?'\n")}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [612]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("oshEval('echo $?')  # call into osh!\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [618]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('exec 1>&2  # stdout to stderr from now on\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [628]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('redir !1 > !2\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [634]
                )
              ]
            )
          ]
          spids: [527]
        )
      spids: [523 526]
    )
    (FuncDef
      name: export-readonly
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('export FOO\n') ('export BAR=bar\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [666]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('setenv FOO\n') ("BAR = 'bar'\n") ('setenv BAR\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [672]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('readonly FOO\n') ('readonly BAR=bar\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [682]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('freeze FOO\n') ("BAR = 'bar'\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [688]
                )
              ]
            )
          ]
          spids: [657]
        )
      spids: [653 656]
    )
    (FuncDef
      name: redirect
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('cat >out.txt <in.txt\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [706]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('cat >out.txt <in.txt\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [712]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('cat >out.txt 2> err.txt\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [722]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('cat >out.txt !2 > err.txt\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [728]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo "error message" >& 2 \n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [738]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo "error message" > !2 \n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [744]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo "error message" 1>&2 \n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [754]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo "error message" !1 > !2 \n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [760]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('cat >${out} <${in}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [770]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('cat >$(out) <$(in)\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [776]
                )
              ]
            )
          ]
          spids: [701]
        )
      spids: [697 700]
    )
    (FuncDef
      name: here-doc
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('cat <<ONE\n') ('echo $hi\n') ('ONE\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [795]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('cat << """\n') ('echo $hi\n') ('"""\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [801]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {("cat <<'ONE'\n") ('single quoted\n') ('ONE\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [811]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("cat << '''\n") ('single quoted\n') ("'''\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [817]
                )
              ]
            )
          ]
          spids: [790]
        )
      spids: [786 789]
    )
    (FuncDef
      name: more-env
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo 1\n') ('FOO=bar BAR=baz echo 2\n') ('echo 2\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [840]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo 1\n') ('env FOO=bar BAR=baz echo 2\n') ('echo 2\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [846]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('FOO="${bar}" BAR="$(echo hi)" echo 2\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [856]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('env FOO=$(bar) BAR=$[echo hi] echo 2\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [862]
                )
              ]
            )
          ]
          spids: [835]
        )
      spids: [831 834]
    )
    (FuncDef
      name: assign-common
      body: 
        (BraceGroup
          children: [
            (C {(osh-to-oil)} {(--fix)} {(-c)} {(SQ <'foo=bar spam="$var"'>)})
            (C {(osh-to-oil)} {(--fix)} {(-c)} {(SQ <'readonly foo=bar spam="${var}"'>)})
            (C {(osh-to-oil)} {(--fix)} {(-c)} {(SQ <'export foo=bar spam="${var}/const"'>)})
            (C {(osh-to-oil)} {(--fix)} {(-c)} {(SQ <'f() { foo=bar spam=${var:-default}; }'>)})
            (C {(osh-to-oil)} {(--fix)} {(-c)} 
              {(SQ <'f() { local foo=bar spam=eggs; foo=mutated; g=new; }'>)}
            )
          ]
          spids: [875]
        )
      spids: [871 874]
    )
    (FuncDef
      name: assign
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('local foo=$(basename $1)\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [973]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('var foo = $[basename $1]\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [979]
                )
              ]
            )
            (ControlFlow token:<ControlFlow_Return return>)
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('local one=1 two three=3\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [993]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("one = '1', two = '', three = '3'\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [999]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('myStr=one\n') ('readonly myConstStr=two\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1009]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("var myStr = 'hi'\n") ("myConstStr = 'hi'\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1015]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('f() {\n') ('  local myStr=one\n') ('  readonly myConstStr=two\n') ('}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1025]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('proc f {\n') ("  var myStr = 'hi'\n") ("  myConstStr = 'hi'\n") ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1031]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {('f() {\n') ('  local myStr=$1\n') ('  readonly myConstStr=$((1 + 2))\n') ('}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1041]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('proc f {\n') ('  var myStr = $1\n') ('  myConstStr = $(1 + 2)\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1047]
                )
              ]
            )
          ]
          spids: [968]
        )
      spids: [964 967]
    )
    (FuncDef
      name: array-literal
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('a=(1 2 3)\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1065]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('var a = [1 2 3]\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1071]
                )
              ]
            )
          ]
          spids: [1060]
        )
      spids: [1056 1059]
    )
    (FuncDef
      name: pipeline
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('ls | sort | uniq -c | sort -n -r\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1089]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('ls | sort | uniq -c | sort -n -r\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1095]
                )
              ]
            )
            (ControlFlow token:<ControlFlow_Return return>)
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('! echo hi | wc\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1165]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('not -- echo hi | wc\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1171]
                )
              ]
            )
          ]
          spids: [1084]
        )
      spids: [1080 1083]
    )
    (FuncDef
      name: and-or
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('ls && echo "$@" || die "foo"\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1189]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('ls && echo @Argv || die "foo"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1195]
                )
              ]
            )
          ]
          spids: [1184]
        )
      spids: [1180 1183]
    )
    (FuncDef
      name: posix-func
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {('func1() {\n') ('  echo func1\n') ('  func2()\n') ('  {\n') ('    echo func2\n') 
                      ('  }\n') ('}\n')
                    }
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1213]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: 
                    {('proc func1 {\n') ('  echo func1\n') ('  proc func2\n') ('  {\n') 
                      ('    echo func2\n') ('  }\n') ('}\n')
                    }
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1219]
                )
              ]
            )
          ]
          spids: [1208]
        )
      spids: [1204 1207]
    )
    (FuncDef
      name: subshell-func
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('subshell-func() (\n') ('  echo subshell\n') (')\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1237]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: 
                    {('proc subshell-func {\n') ('  shell { \n') ('    echo subshell\n') ('  }\n') 
                      ('}\n')
                    }
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1243]
                )
              ]
            )
          ]
          spids: [1232]
        )
      spids: [1228 1231]
    )
    (FuncDef
      name: ksh-func
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {('function func1 {  # no parens\n') ('  echo func1\n') ('  function func2()\n') 
                      ('  {\n') ('    echo func2\n') ('  }\n') ('}\n')
                    }
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1261]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: 
                    {('proc func1 {  # no parens\n') ('  echo func1\n') ('  proc func2\n') ('  {\n') 
                      ('    echo func2\n') ('  }\n') ('}\n')
                    }
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1267]
                )
              ]
            )
          ]
          spids: [1256]
        )
      spids: [1252 1255]
    )
    (FuncDef
      name: for-loop
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('for x in a b c \\\n') ('  d e f; do\n') ('  echo $x\n') ('done\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1285]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('for x in [a b c \\\n') ('  d e f] {\n') ('  echo $x\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1291]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('for x in a b c \\\n') ('  d e f\n') ('do\n') ('  echo $x\n') ('done\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1301]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('for x in [a b c \\\n') ('  d e f]\n') ('{\n') ('  echo $x\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1307]
                )
              ]
            )
          ]
          spids: [1280]
        )
      spids: [1276 1279]
    )
    (FuncDef
      name: empty-for-loop
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('for x in \n') ('do\n') ('  echo $x\n') ('done\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1325]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('for x in []\n') ('{\n') ('  echo $x\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1331]
                )
              ]
            )
          ]
          spids: [1320]
        )
      spids: [1316 1319]
    )
    (FuncDef
      name: args-for-loop
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('for x; do\n') ('  echo $x\n') ('done\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1349]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('for x in @Argv {\n') ('  echo $x\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1355]
                )
              ]
            )
            (ControlFlow token:<ControlFlow_Return return>)
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('for x\n') ('do\n') ('  echo $x\n') ('done\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1383]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('for x in @Argv\n') ('{\n') ('  echo $x\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1389]
                )
              ]
            )
          ]
          spids: [1344]
        )
      spids: [1340 1343]
    )
    (FuncDef
      name: while-loop
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('while read line; do\n') ('  echo $line\n') ('done\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1407]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('while read line {\n') ('  echo $line\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1413]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('while read \\\n') ('  line; do\n') ('  echo $line\n') ('done\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1423]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('while read \\\n') ('  line {\n') ('  echo $line\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1429]
                )
              ]
            )
          ]
          spids: [1402]
        )
      spids: [1398 1401]
    )
    (FuncDef
      name: if_
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('if true; then\n') ('  echo yes\n') ('fi\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1447]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('if true {\n') ('  echo yes\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1453]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('if true\n') ('then\n') ('  echo yes\n') ('fi\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1463]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('if true\n') ('{\n') ('  echo yes\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1469]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {('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')
                    }
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1479]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: 
                    {('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_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1485]
                )
              ]
            )
          ]
          spids: [1442]
        )
      spids: [1438 1441]
    )
    (FuncDef
      name: case_
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {('case $var in\n') ('  foo|bar)\n') ('    [ -f foo ] && echo file\n') 
                      ('    ;;\n') ('  *)\n') ('    echo default\n') ('    ;;\n') ('esac\n')
                    }
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1503]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: 
                    {('matchstr $var {\n') ('  foo|bar {\n') ('    test -f foo && echo file\n') 
                      ('    }\n') ('  * {\n') ('    echo default\n') ('    }\n') ('}\n')
                    }
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1509]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {('case "$var" in\n') ('  *)\n') ('    echo foo\n') ('    echo bar  # no dsemi\n') 
                      ('esac\n')
                    }
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1519]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: 
                    {('matchstr $var {\n') ('  * {\n') ('    echo foo\n') 
                      ('    echo bar  # no dsemi\n') ('    }\n') ('}\n')
                    }
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1525]
                )
              ]
            )
          ]
          spids: [1498]
        )
      spids: [1494 1497]
    )
    (FuncDef
      name: subshell
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('(echo hi;)\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1543]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('shell {echo hi;}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1549]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('(echo hi)\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1559]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('shell {echo hi}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1565]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('(echo hi; echo bye)\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1575]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('shell {echo hi; echo bye}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1581]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('( (echo hi; echo bye ) )\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1591]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('shell { shell {echo hi; echo bye } }\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1597]
                )
              ]
            )
          ]
          spids: [1538]
        )
      spids: [1534 1537]
    )
    (FuncDef
      name: brace-group
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('{ echo hi; }\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1615]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('do { echo hi; }\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1621]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('{ echo hi; echo bye; }\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1631]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('do { echo hi; echo bye; }\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1637]
                )
              ]
            )
          ]
          spids: [1610]
        )
      spids: [1606 1609]
    )
    (FuncDef
      name: fork
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('sleep 1&\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1655]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('fork sleep 1\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1661]
                )
              ]
            )
          ]
          spids: [1650]
        )
      spids: [1646 1649]
    )
    (FuncDef
      name: var-sub
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo $foo\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1679]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $foo\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1685]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo $foo ${bar} "__${bar}__"\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1695]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $foo $(bar) "__$(bar)__"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1701]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo ${foo:-default}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1711]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("echo $(foo or 'default')\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1717]
                )
              ]
            )
          ]
          spids: [1674]
        )
      spids: [1670 1673]
    )
    (FuncDef
      name: command-sub
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo $(echo hi)\n') ('echo `echo hi`\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1735]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $[echo hi]\n') ('echo $[echo hi]\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1741]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo "__$(echo hi)__"\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1751]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo "__$[echo hi]__"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1757]
                )
              ]
            )
          ]
          spids: [1730]
        )
      spids: [1726 1729]
    )
    (FuncDef
      name: proc-sub
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo <(echo hi) >(echo hi)\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1776]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $<[echo hi] $>[echo hi]\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1782]
                )
              ]
            )
          ]
          spids: [1771]
        )
      spids: [1767 1770]
    )
    (FuncDef
      name: arith-sub
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo __$((  1+ 2 ))__\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1800]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo __$(  1+ 2 )__\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1806]
                )
              ]
            )
            (ControlFlow token:<ControlFlow_Return return>)
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo $[  1+ 2 ]\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1823]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $(  1+ 2 )\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1829]
                )
              ]
            )
          ]
          spids: [1795]
        )
      spids: [1791 1794]
    )
    (FuncDef
      name: arith-ops
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo $(( a > 0 ? 2**3 : 3/2 ))\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1879]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $(( 2^3 if a > 0 else 3 div 2 ))\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1885]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo $(( a << 1 | b & 1 ))\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1895]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $(( a << 1 .| b .& 1 ))\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1901]
                )
              ]
            )
          ]
          spids: [1843]
        )
      spids: [1839 1842]
    )
    (FuncDef
      name: dbracket
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('[[ -d / ]] && echo "is dir"\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1922]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('isDir(\'/\') && echo "is dir"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1928]
                )
              ]
            )
          ]
          spids: [1917]
        )
      spids: [1913 1916]
    )
    (FuncDef
      name: escaped-literal
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo \\$  \\  \\n "\\$" "\\n"\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1946]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo \'$\'  \' \' \'n\' "\\$" "\\n"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1952]
                )
              ]
            )
            (ControlFlow token:<ControlFlow_Return return>)
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo \\$\\ \\$\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1969]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("echo '$ $'\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1975]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('echo \\\n') ('  hi\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1989]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo \\\n') ('  hi\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1995]
                )
              ]
            )
          ]
          spids: [1941]
        )
      spids: [1937 1940]
    )
    (FuncDef
      name: words
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {("echo foo'bar'\n") ("echo foo'bar'$baz\n")}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [2021]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("echo 'foobar'\n") ('echo "foobar$baz"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [2027]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {("echo ~/'name with spaces'\n")}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [2045]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo "$HOME/name with spaces"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [2051]
                )
              ]
            )
          ]
          spids: [2008]
        )
      spids: [2004 2007]
    )
    (FuncDef
      name: time-block
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('time ls\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [2069]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('time ls\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [2075]
                )
              ]
            )
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('time while false; do\n') ('  echo $i\n') ('done\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [2085]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('time while false {\n') ('  echo $i\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [2091]
                )
              ]
            )
            (ControlFlow token:<ControlFlow_Return return>)
            (SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {('time {\n') ('  echo one\n') ('  echo two\n') ('}\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [2108]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('time {\n') ('  echo one\n') ('  echo two\n') ('}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [2114]
                )
              ]
            )
          ]
          spids: [2064]
        )
      spids: [2060 2063]
    )
    (Assignment
      keyword: Assign_Readonly
      flags: [-a]
      pairs: [
        (assign_pair
          lhs: (LhsName name:PASSING)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                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)}
                ]
              )
            }
          spids: [2127]
        )
      ]
      spids: [2123]
    )
    (FuncDef
      name: all-passing
      body: 
        (BraceGroup
          children: [
            (C {(run-all)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name PASSING>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [2236 2241]
                  )
                )
              }
            )
          ]
          spids: [2230]
        )
      spids: [2226 2229]
    )
    (FuncDef
      name: run-for-release
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out_dir)
                  op: Equal
                  rhs: {(_tmp/osh2oil)}
                  spids: [2256]
                )
              ]
              spids: [2254]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$out_dir')})
            (Pipeline
              children: [(C {(all-passing)}) (C {(tee)} {($ VSub_Name '$out_dir') (/log.txt)})]
              negated: F
            )
            (C {(echo)} {(DQ ('Wrote ') ($ VSub_Name '$out_dir') (/log.txt))})
          ]
          spids: [2251]
        )
      spids: [2247 2250]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)