(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (FuncDef
      name: osh-to-oil
      body: (BraceGroup children:[(C {(bin/osh)} {(--fix)} {(DQ ($ VSub_At '$@'))})] spids:[36])
      spids: [32 35]
    )
    (FuncDef
      name: fail
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(SQ <'TEST FAILED'>)})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [54]
        )
      spids: [50 53]
    )
    (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: [78]
        )
      spids: [74 77]
    )
    (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: [113]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo one @Argv two\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [119]
                )
              ]
            )
            (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: [133]
                )
                (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: [139]
                )
              ]
            )
            (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: [149]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $Status $Argc\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [155]
                )
              ]
            )
          ]
          spids: [108]
        )
      spids: [104 107]
    )
    (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: [173]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $1 $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 "${foo}"\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [189]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $(foo)\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [195]
                )
              ]
            )
            (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: [205]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $[echo hi]\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [211]
                )
              ]
            )
          ]
          spids: [168]
        )
      spids: [164 167]
    )
    (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: [237]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $(Status) $(len(Argv)) @Argv\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [243]
                )
              ]
            )
            (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: [262]
                )
                (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: [268]
                )
              ]
            )
          ]
          spids: [224]
        )
      spids: [220 223]
    )
    (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: [307]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $Status $len(Argv) @Argv\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [313]
                )
              ]
            )
          ]
          spids: [281]
        )
      spids: [277 280]
    )
    (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: [331]
                )
                (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: [337]
                )
              ]
            )
          ]
          spids: [326]
        )
      spids: [322 325]
    )
    (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: [358]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $len(s) $len(a)\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [364]
                )
              ]
            )
          ]
          spids: [353]
        )
      spids: [349 352]
    )
    (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: [382]
                )
                (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: [388]
                )
              ]
            )
          ]
          spids: [377]
        )
      spids: [373 376]
    )
    (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: [406]
                )
                (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: [412]
                )
              ]
            )
          ]
          spids: [401]
        )
      spids: [397 400]
    )
    (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: [436]
                )
                (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: [442]
                )
              ]
            )
          ]
          spids: [431]
        )
      spids: [427 430]
    )
    (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: [460]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo hi\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [466]
                )
              ]
            )
          ]
          spids: [455]
        )
      spids: [451 454]
    )
    (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: [484]
                )
                (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: [490]
                )
              ]
            )
          ]
          spids: [479]
        )
      spids: [475 478]
    )
    (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: [508]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('test ! -z $foo || die\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [514]
                )
              ]
            )
            (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: [524]
                )
                (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: [530]
                )
              ]
            )
          ]
          spids: [503]
        )
      spids: [499 502]
    )
    (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: [548]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('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: {('[ -f lib.sh ] && . lib.sh\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [564]
                )
                (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: [570]
                )
              ]
            )
            (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: [596]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('setoption +errexit\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: {("echo '\\n'\n") ("echo -e '\\n'\n") ("echo -e -n '\\n'\n")}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [612]
                )
                (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: [618]
                )
              ]
            )
            (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: [628]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("oshEval('echo $?')  # call into osh!\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [634]
                )
              ]
            )
            (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: [644]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('redir !1 > !2\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [650]
                )
              ]
            )
          ]
          spids: [543]
        )
      spids: [539 542]
    )
    (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: [682]
                )
                (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: [688]
                )
              ]
            )
            (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: [698]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('freeze FOO\n') ("BAR = 'bar'\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [704]
                )
              ]
            )
          ]
          spids: [673]
        )
      spids: [669 672]
    )
    (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: [722]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('cat >out.txt <in.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: {('cat >out.txt 2> err.txt\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [738]
                )
                (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: [744]
                )
              ]
            )
            (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: [754]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo "error message" > !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: {('echo "error message" 1>&2 \n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [770]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo "error message" !1 > !2 \n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [776]
                )
              ]
            )
            (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: [786]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('cat >$(out) <$(in)\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [792]
                )
              ]
            )
          ]
          spids: [717]
        )
      spids: [713 716]
    )
    (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: [811]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('cat << """\n') ('echo $hi\n') ('"""\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [817]
                )
              ]
            )
            (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: [827]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("cat << '''\n") ('single quoted\n') ("'''\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [833]
                )
              ]
            )
          ]
          spids: [806]
        )
      spids: [802 805]
    )
    (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: [856]
                )
                (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: [862]
                )
              ]
            )
            (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: [872]
                )
                (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: [878]
                )
              ]
            )
          ]
          spids: [851]
        )
      spids: [847 850]
    )
    (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: [891]
        )
      spids: [887 890]
    )
    (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: [989]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('var foo = $[basename $1]\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [995]
                )
              ]
            )
            (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: [1009]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("one = '1', two = '', three = '3'\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: {('myStr=one\n') ('readonly myConstStr=two\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1025]
                )
                (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: [1031]
                )
              ]
            )
            (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: [1041]
                )
                (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: [1047]
                )
              ]
            )
            (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: [1057]
                )
                (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: [1063]
                )
              ]
            )
          ]
          spids: [984]
        )
      spids: [980 983]
    )
    (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: [1081]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('var a = [1 2 3]\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1087]
                )
              ]
            )
          ]
          spids: [1076]
        )
      spids: [1072 1075]
    )
    (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: [1105]
                )
                (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: [1111]
                )
              ]
            )
            (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: [1181]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('not -- echo hi | wc\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1187]
                )
              ]
            )
          ]
          spids: [1100]
        )
      spids: [1096 1099]
    )
    (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: [1205]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('ls && echo @Argv || die "foo"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1211]
                )
              ]
            )
          ]
          spids: [1200]
        )
      spids: [1196 1199]
    )
    (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: [1229]
                )
                (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: [1235]
                )
              ]
            )
          ]
          spids: [1224]
        )
      spids: [1220 1223]
    )
    (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: [1253]
                )
                (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: [1259]
                )
              ]
            )
          ]
          spids: [1248]
        )
      spids: [1244 1247]
    )
    (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: [1277]
                )
                (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: [1283]
                )
              ]
            )
          ]
          spids: [1272]
        )
      spids: [1268 1271]
    )
    (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: [1301]
                )
                (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: [1307]
                )
              ]
            )
            (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: [1317]
                )
                (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: [1323]
                )
              ]
            )
          ]
          spids: [1296]
        )
      spids: [1292 1295]
    )
    (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: [1341]
                )
                (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: [1347]
                )
              ]
            )
          ]
          spids: [1336]
        )
      spids: [1332 1335]
    )
    (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: [1365]
                )
                (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: [1371]
                )
              ]
            )
            (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: [1399]
                )
                (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: [1405]
                )
              ]
            )
          ]
          spids: [1360]
        )
      spids: [1356 1359]
    )
    (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: [1423]
                )
                (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: [1429]
                )
              ]
            )
            (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: [1439]
                )
                (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: [1445]
                )
              ]
            )
          ]
          spids: [1418]
        )
      spids: [1414 1417]
    )
    (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: [1463]
                )
                (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: [1469]
                )
              ]
            )
            (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: [1479]
                )
                (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: [1485]
                )
              ]
            )
            (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: [1495]
                )
                (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: [1501]
                )
              ]
            )
          ]
          spids: [1458]
        )
      spids: [1454 1457]
    )
    (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: [1519]
                )
                (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: [1525]
                )
              ]
            )
            (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: [1535]
                )
                (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: [1541]
                )
              ]
            )
          ]
          spids: [1514]
        )
      spids: [1510 1513]
    )
    (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: [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)\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1575]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('shell {echo hi}\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 {echo hi; echo bye}\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1597]
                )
              ]
            )
            (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: [1607]
                )
                (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: [1613]
                )
              ]
            )
          ]
          spids: [1554]
        )
      spids: [1550 1553]
    )
    (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: [1631]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('do { echo hi; }\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1637]
                )
              ]
            )
            (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: [1647]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('do { echo hi; echo bye; }\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1653]
                )
              ]
            )
          ]
          spids: [1626]
        )
      spids: [1622 1625]
    )
    (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: [1671]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('fork sleep 1\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1677]
                )
              ]
            )
          ]
          spids: [1666]
        )
      spids: [1662 1665]
    )
    (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: [1695]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $foo\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 ${bar} "__${bar}__"\n')}
                  do_expansion: False
                  here_end: OSH
                  was_filled: T
                  spids: [1711]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $foo $(bar) "__$(bar)__"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1717]
                )
              ]
            )
            (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: [1727]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("echo $(foo or 'default')\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1733]
                )
              ]
            )
          ]
          spids: [1690]
        )
      spids: [1686 1689]
    )
    (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: [1751]
                )
                (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: [1757]
                )
              ]
            )
            (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: [1767]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo "__$[echo hi]__"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1773]
                )
              ]
            )
          ]
          spids: [1746]
        )
      spids: [1742 1745]
    )
    (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: [1792]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $<[echo hi] $>[echo hi]\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1798]
                )
              ]
            )
          ]
          spids: [1787]
        )
      spids: [1783 1786]
    )
    (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: [1816]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo __$(  1+ 2 )__\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1822]
                )
              ]
            )
            (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: [1839]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $(  1+ 2 )\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1845]
                )
              ]
            )
          ]
          spids: [1811]
        )
      spids: [1807 1810]
    )
    (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: [1895]
                )
                (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: [1901]
                )
              ]
            )
            (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: [1911]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo $(( a << 1 .| b .& 1 ))\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1917]
                )
              ]
            )
          ]
          spids: [1859]
        )
      spids: [1855 1858]
    )
    (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: [1938]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('isDir(\'/\') && echo "is dir"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1944]
                )
              ]
            )
          ]
          spids: [1933]
        )
      spids: [1929 1932]
    )
    (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: [1962]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo \'$\'  \' \' \'n\' "\\$" "\\n"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1968]
                )
              ]
            )
            (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: [1985]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {("echo '$ $'\n")}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [1991]
                )
              ]
            )
            (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: [2005]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo \\\n') ('  hi\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [2011]
                )
              ]
            )
          ]
          spids: [1957]
        )
      spids: [1953 1956]
    )
    (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: [2037]
                )
                (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: [2043]
                )
              ]
            )
            (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: [2061]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('echo "$HOME/name with spaces"\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [2067]
                )
              ]
            )
          ]
          spids: [2024]
        )
      spids: [2020 2023]
    )
    (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: [2085]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 3
                  body: {('time ls\n')}
                  do_expansion: False
                  here_end: OIL
                  was_filled: T
                  spids: [2091]
                )
              ]
            )
            (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: [2101]
                )
                (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: [2107]
                )
              ]
            )
            (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: [2124]
                )
                (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: [2130]
                )
              ]
            )
          ]
          spids: [2080]
        )
      spids: [2076 2079]
    )
    (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: [2143]
        )
      ]
      spids: [2139]
    )
    (FuncDef
      name: all-passing
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: t
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name PASSING>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [2256 2261]
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [(C {($ VSub_Name '$t')}) (C {(echo)} {(DQ ('OK  ') ($ VSub_Name '$t'))})]
                  spids: [2265 2283]
                )
              spids: [2254 2263]
            )
            (C {(echo)})
            (C {(echo)} {(DQ ('All osh2oil tests passed.'))})
          ]
          spids: [2246]
        )
      spids: [2242 2245]
    )
    (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: [2308]
                )
              ]
              spids: [2306]
            )
            (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: [2303]
        )
      spids: [2299 2302]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)