(command.CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (C {(source)} {(test/common.sh)})
    (command.FuncDef
      name: osh-to-oil
      body: 
        (command.BraceGroup
          children: [(C {($ VSub_DollarName '$OSH')} {(--fix)} {(DQ ($ VSub_At '$@'))})]
          spids: [41]
        )
      spids: [37 40]
    )
    (command.FuncDef
      name: osh0-oil3
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Pipeline
                  children: [
                    (C {(osh-to-oil)} {(DQ ($ VSub_At '$@'))})
                    (C {(diff)} {(-u)} {(/dev/fd/3)} {(-)})
                  ]
                  negated: F
                )
                (C {(fail)})
              ]
            )
          ]
          spids: [62]
        )
      spids: [58 61]
    )
    (command.FuncDef
      name: args-vars
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 110
                  stdin_parts: [('echo one "$@" two\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 112
                  stdin_parts: [('echo one @Argv two\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 134
                  stdin_parts: [('echo one $* "__$*__" $@ two\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 136
                  stdin_parts: [('echo one $ifsjoin(Argv) "__$ifsjoin(Argv)__" $ifsjoin(Argv) two\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 154
                  stdin_parts: [('echo $? $#\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 156
                  stdin_parts: [('echo $Status $Argc\n')]
                )
              ]
            )
          ]
          spids: [92]
        )
      spids: [88 91]
    )
    (command.FuncDef
      name: unquote-subs
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 182
                  stdin_parts: [('echo "$1" "$foo"\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 184
                  stdin_parts: [('echo $1 $foo\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 202
                  stdin_parts: [('echo "${foo}"\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 204
                  stdin_parts: [('echo $(foo)\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 222
                  stdin_parts: [('echo "$(echo hi)"\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 224
                  stdin_parts: [('echo $[echo hi]\n')]
                )
              ]
            )
          ]
          spids: [164]
        )
      spids: [160 163]
    )
    (command.FuncDef
      name: special-vars
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 258
                  stdin_parts: [('echo ${?} ${#} ${@}\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 260
                  stdin_parts: [('echo $(Status) $(len(Argv)) @Argv\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 287
                  stdin_parts: [('echo $9 $10 ${10} ${11}\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 289
                  stdin_parts: [('echo $9 $10 $10 $11   # Rule is changed\n')]
                )
              ]
            )
          ]
          spids: [232]
        )
      spids: [228 231]
    )
    (command.FuncDef
      name: arg-array
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 336
                  stdin_parts: [('echo $@ $* "$@" "$*" "__$@__" "__$*__"\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 338
                  stdin_parts: [('echo $Status $len(Argv) @Argv\n')]
                )
              ]
            )
          ]
          spids: [297]
        )
      spids: [293 296]
    )
    (command.FuncDef
      name: bracket-ops
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 364
                  stdin_parts: [('echo ${a[1]} ${a[@]} ${PIPESTATUS[@]} ${BASH_REMATCH[@]}\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 366
                  stdin_parts: [('echo $a[1] @a $PipeStatus @Match\n')]
                )
              ]
            )
          ]
          spids: [346]
        )
      spids: [342 345]
    )
    (command.FuncDef
      name: prefix-ops
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 395
                  stdin_parts: [('echo ${#s} ${#a[@]}\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 397
                  stdin_parts: [('echo $len(s) $len(a)\n')]
                )
              ]
            )
          ]
          spids: [377]
        )
      spids: [373 376]
    )
    (command.FuncDef
      name: suffix-ops
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 423
                  stdin_parts: [('echo ${s:-3} ${s##suffix}\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 425
                  stdin_parts: [("echo $(s or 3) $s.trimRight('suffix')\n")]
                )
              ]
            )
          ]
          spids: [405]
        )
      spids: [401 404]
    )
    (command.FuncDef
      name: slice
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 451
                  stdin_parts: [('echo ${a:1:2} ${a[@]:1:2}\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 453
                  stdin_parts: [('echo $a[1:3] @a[1:3]\n')]
                )
              ]
            )
          ]
          spids: [433]
        )
      spids: [429 432]
    )
    (command.FuncDef
      name: patsub
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 485
                  stdin_parts: [('echo ${s/foo/bar} ${s//foo/bar}\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 487
                  stdin_parts: [("echo $s.replace('foo', 'bar') $s.replace('foo', 'bar', :ALL)\n")]
                )
              ]
            )
          ]
          spids: [467]
        )
      spids: [463 466]
    )
    (command.FuncDef
      name: simple-command
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 513
                  stdin_parts: [('echo hi\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 515
                  stdin_parts: [('echo hi\n')]
                )
              ]
            )
          ]
          spids: [495]
        )
      spids: [491 494]
    )
    (command.FuncDef
      name: line-breaks
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 543
                  stdin_parts: [('echo one \\\n') ('  two three \\\n') ('  four\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 547
                  stdin_parts: [('echo one \\\n') ('  two three \\\n') ('  four\n')]
                )
              ]
            )
          ]
          spids: [523]
        )
      spids: [519 522]
    )
    (command.FuncDef
      name: bracket-builtin
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 573
                  stdin_parts: [('[ ! -z "$foo" ] || die\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 575
                  stdin_parts: [('test ! -z $foo || die\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 595
                  stdin_parts: [('if [ "$foo" -eq 3 ]; then\n') ('  echo yes\n') ('fi\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 599
                  stdin_parts: [('if test $foo -eq 3 {\n') ('  echo yes\n') ('}\n')]
                )
              ]
            )
          ]
          spids: [555]
        )
      spids: [551 554]
    )
    (command.FuncDef
      name: builtins
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 625
                  stdin_parts: [('. lib.sh\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 627
                  stdin_parts: [('source lib.sh\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 645
                  stdin_parts: [('[ -f lib.sh ] && . lib.sh\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 647
                  stdin_parts: [('test -f lib.sh && source lib.sh\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 681
                  stdin_parts: [('set -o errexit\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 683
                  stdin_parts: [('setoption +errexit\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 703
                  stdin_parts: [("echo '\\n'\n") ("echo -e '\\n'\n") ("echo -e -n '\\n'\n")]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 707
                  stdin_parts: [("echo '\\\\n'\n") ("echo '\\n'\n") ("write '\\n'\n")]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 725
                  stdin_parts: [("eval 'echo $?'\n")]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 727
                  stdin_parts: [("oshEval('echo $?')  # call into osh!\n")]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 745
                  stdin_parts: [('exec 1>&2  # stdout to stderr from now on\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 747
                  stdin_parts: [('redir !1 > !2\n')]
                )
              ]
            )
          ]
          spids: [607]
        )
      spids: [603 606]
    )
    (command.FuncDef
      name: export-readonly
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 788
                  stdin_parts: [('export FOO\n') ('export BAR=bar\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 792
                  stdin_parts: [('setenv FOO\n') ("BAR = 'bar'\n") ('setenv BAR\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 811
                  stdin_parts: [('readonly FOO\n') ('readonly BAR=bar\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 814
                  stdin_parts: [('freeze FOO\n') ("BAR = 'bar'\n")]
                )
              ]
            )
          ]
          spids: [765]
        )
      spids: [761 764]
    )
    (command.FuncDef
      name: redirect
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 840
                  stdin_parts: [('cat >out.txt <in.txt\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 842
                  stdin_parts: [('cat >out.txt <in.txt\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 860
                  stdin_parts: [('cat >out.txt 2> err.txt\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 862
                  stdin_parts: [('cat >out.txt !2 > err.txt\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 880
                  stdin_parts: [('echo "error message" >& 2 \n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 882
                  stdin_parts: [('echo "error message" > !2 \n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 900
                  stdin_parts: [('echo "error message" 1>&2 \n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 902
                  stdin_parts: [('echo "error message" !1 > !2 \n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 920
                  stdin_parts: [('cat >${out} <${in}\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 922
                  stdin_parts: [('cat >$(out) <$(in)\n')]
                )
              ]
            )
          ]
          spids: [822]
        )
      spids: [818 821]
    )
    (command.FuncDef
      name: here-doc
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 951
                  stdin_parts: [('cat <<ONE\n') ('echo $hi\n') ('ONE\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 955
                  stdin_parts: [('cat << """\n') ('echo $hi\n') ('"""\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 975
                  stdin_parts: [("cat <<'ONE'\n") ('single quoted\n') ('ONE\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 979
                  stdin_parts: [("cat << '''\n") ('single quoted\n') ("'''\n")]
                )
              ]
            )
          ]
          spids: [931]
        )
      spids: [927 930]
    )
    (command.FuncDef
      name: more-env
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1012
                  stdin_parts: [('echo 1\n') ('FOO=bar BAR=baz echo 2\n') ('echo 2\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1016
                  stdin_parts: [('echo 1\n') ('env FOO=bar BAR=baz echo 2\n') ('echo 2\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1034
                  stdin_parts: [('FOO="${bar}" BAR="$(echo hi)" echo 2\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1036
                  stdin_parts: [('env FOO=$(bar) BAR=$[echo hi] echo 2\n')]
                )
              ]
            )
          ]
          spids: [992]
        )
      spids: [988 991]
    )
    (command.FuncDef
      name: assign-common
      body: 
        (command.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: [1044]
        )
      spids: [1040 1043]
    )
    (command.FuncDef
      name: assign
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1155
                  stdin_parts: [('local foo=$(basename $1)\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1157
                  stdin_parts: [('var foo = $[basename $1]\n')]
                )
              ]
            )
            (command.ControlFlow token:<ControlFlow_Return return>)
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1179
                  stdin_parts: [('local one=1 two three=3\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1181
                  stdin_parts: [("one = '1', two = '', three = '3'\n")]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1200
                  stdin_parts: [('myStr=one\n') ('readonly myConstStr=two\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1203
                  stdin_parts: [("var myStr = 'hi'\n") ("myConstStr = 'hi'\n")]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1224
                  stdin_parts: [
                    ('f() {\n')
                    ('  local myStr=one\n')
                    ('  readonly myConstStr=two\n')
                    ('}\n')
                  ]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1229
                  stdin_parts: [
                    ('proc f {\n')
                    ("  var myStr = 'hi'\n")
                    ("  myConstStr = 'hi'\n")
                    ('}\n')
                  ]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1250
                  stdin_parts: [
                    ('f() {\n')
                    ('  local myStr=$1\n')
                    ('  readonly myConstStr=$((1 + 2))\n')
                    ('}\n')
                  ]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1255
                  stdin_parts: [
                    ('proc f {\n')
                    ('  var myStr = $1\n')
                    ('  myConstStr = $(1 + 2)\n')
                    ('}\n')
                  ]
                )
              ]
            )
          ]
          spids: [1137]
        )
      spids: [1133 1136]
    )
    (command.FuncDef
      name: array-literal
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1281
                  stdin_parts: [('a=(1 2 3)\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1283
                  stdin_parts: [('var a = [1 2 3]\n')]
                )
              ]
            )
          ]
          spids: [1263]
        )
      spids: [1259 1262]
    )
    (command.FuncDef
      name: pipeline
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1309
                  stdin_parts: [('ls | sort | uniq -c | sort -n -r\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1311
                  stdin_parts: [('ls | sort | uniq -c | sort -n -r\n')]
                )
              ]
            )
            (command.ControlFlow token:<ControlFlow_Return return>)
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1389
                  stdin_parts: [('! echo hi | wc\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1391
                  stdin_parts: [('not -- echo hi | wc\n')]
                )
              ]
            )
          ]
          spids: [1291]
        )
      spids: [1287 1290]
    )
    (command.FuncDef
      name: and-or
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1417
                  stdin_parts: [('ls && echo "$@" || die "foo"\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1419
                  stdin_parts: [('ls && echo @Argv || die "foo"\n')]
                )
              ]
            )
          ]
          spids: [1399]
        )
      spids: [1395 1398]
    )
    (command.FuncDef
      name: posix-func
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1451
                  stdin_parts: [
                    ('func1() {\n')
                    ('  echo func1\n')
                    ('  func2()\n')
                    ('  {\n')
                    ('    echo func2\n')
                    ('  }\n')
                    ('}\n')
                  ]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1459
                  stdin_parts: [
                    ('proc func1 {\n')
                    ('  echo func1\n')
                    ('  proc func2\n')
                    ('  {\n')
                    ('    echo func2\n')
                    ('  }\n')
                    ('}\n')
                  ]
                )
              ]
            )
          ]
          spids: [1427]
        )
      spids: [1423 1426]
    )
    (command.FuncDef
      name: subshell-func
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1487
                  stdin_parts: [('subshell-func() (\n') ('  echo subshell\n') (')\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1493
                  stdin_parts: [
                    ('proc subshell-func {\n')
                    ('  shell { \n')
                    ('    echo subshell\n')
                    ('  }\n')
                    ('}\n')
                  ]
                )
              ]
            )
          ]
          spids: [1467]
        )
      spids: [1463 1466]
    )
    (command.FuncDef
      name: ksh-func
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1525
                  stdin_parts: [
                    ('function func1 {  # no parens\n')
                    ('  echo func1\n')
                    ('  function func2()\n')
                    ('  {\n')
                    ('    echo func2\n')
                    ('  }\n')
                    ('}\n')
                  ]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1533
                  stdin_parts: [
                    ('proc func1 {  # no parens\n')
                    ('  echo func1\n')
                    ('  proc func2\n')
                    ('  {\n')
                    ('    echo func2\n')
                    ('  }\n')
                    ('}\n')
                  ]
                )
              ]
            )
          ]
          spids: [1501]
        )
      spids: [1497 1500]
    )
    (command.FuncDef
      name: for-loop
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1562
                  stdin_parts: [('for x in a b c \\\n') ('  d e f; do\n') ('  echo $x\n') ('done\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1567
                  stdin_parts: [('for x in [a b c \\\n') ('  d e f] {\n') ('  echo $x\n') ('}\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1589
                  stdin_parts: [('for x in a b c \\\n') ('  d e f\n') ('do\n') ('  echo $x\n') ('done\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1595
                  stdin_parts: [('for x in [a b c \\\n') ('  d e f]\n') ('{\n') ('  echo $x\n') ('}\n')]
                )
              ]
            )
          ]
          spids: [1541]
        )
      spids: [1537 1540]
    )
    (command.FuncDef
      name: empty-for-loop
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1624
                  stdin_parts: [('for x in \n') ('do\n') ('  echo $x\n') ('done\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1629
                  stdin_parts: [('for x in []\n') ('{\n') ('  echo $x\n') ('}\n')]
                )
              ]
            )
          ]
          spids: [1603]
        )
      spids: [1599 1602]
    )
    (command.FuncDef
      name: args-for-loop
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1657
                  stdin_parts: [('for x; do\n') ('  echo $x\n') ('done\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1661
                  stdin_parts: [('for x in @Argv {\n') ('  echo $x\n') ('}\n')]
                )
              ]
            )
            (command.ControlFlow token:<ControlFlow_Return return>)
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1700
                  stdin_parts: [('for x\n') ('do\n') ('  echo $x\n') ('done\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1705
                  stdin_parts: [('for x in @Argv\n') ('{\n') ('  echo $x\n') ('}\n')]
                )
              ]
            )
          ]
          spids: [1637]
        )
      spids: [1633 1636]
    )
    (command.FuncDef
      name: while-loop
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1733
                  stdin_parts: [('while read line; do\n') ('  echo $line\n') ('done\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1737
                  stdin_parts: [('while read line {\n') ('  echo $line\n') ('}\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1758
                  stdin_parts: [('while read \\\n') ('  line; do\n') ('  echo $line\n') ('done\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1763
                  stdin_parts: [('while read \\\n') ('  line {\n') ('  echo $line\n') ('}\n')]
                )
              ]
            )
          ]
          spids: [1713]
        )
      spids: [1709 1712]
    )
    (command.FuncDef
      name: if_
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1791
                  stdin_parts: [('if true; then\n') ('  echo yes\n') ('fi\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1795
                  stdin_parts: [('if true {\n') ('  echo yes\n') ('}\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1816
                  stdin_parts: [('if true\n') ('then\n') ('  echo yes\n') ('fi\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1821
                  stdin_parts: [('if true\n') ('{\n') ('  echo yes\n') ('}\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1847
                  stdin_parts: [
                    ('if true; then\n')
                    ('  echo yes\n')
                    ('elif false; then\n')
                    ('  echo elif\n')
                    ('elif spam; then\n')
                    ('  echo elif\n')
                    ('else\n')
                    ('  echo no\n')
                    ('fi\n')
                  ]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1857
                  stdin_parts: [
                    ('if true {\n')
                    ('  echo yes\n')
                    ('} elif false {\n')
                    ('  echo elif\n')
                    ('} elif spam {\n')
                    ('  echo elif\n')
                    ('} else {\n')
                    ('  echo no\n')
                    ('}\n')
                  ]
                )
              ]
            )
          ]
          spids: [1771]
        )
      spids: [1767 1770]
    )
    (command.FuncDef
      name: case_
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1890
                  stdin_parts: [
                    ('case $var in\n')
                    ('  foo|bar)\n')
                    ('    [ -f foo ] && echo file\n')
                    ('    ;;\n')
                    ('  *)\n')
                    ('    echo default\n')
                    ('    ;;\n')
                    ('esac\n')
                  ]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1899
                  stdin_parts: [
                    ('matchstr $var {\n')
                    ('  foo|bar {\n')
                    ('    test -f foo && echo file\n')
                    ('    }\n')
                    ('  * {\n')
                    ('    echo default\n')
                    ('    }\n')
                    ('}\n')
                  ]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1921
                  stdin_parts: [
                    ('case "$var" in\n')
                    ('  *)\n')
                    ('    echo foo\n')
                    ('    echo bar  # no dsemi\n')
                    ('esac\n')
                  ]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1928
                  stdin_parts: [
                    ('matchstr $var {\n')
                    ('  * {\n')
                    ('    echo foo\n')
                    ('    echo bar  # no dsemi\n')
                    ('    }\n')
                    ('}\n')
                  ]
                )
              ]
            )
          ]
          spids: [1865]
        )
      spids: [1861 1864]
    )
    (command.FuncDef
      name: subshell
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1954
                  stdin_parts: [('(echo hi;)\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1956
                  stdin_parts: [('shell {echo hi;}\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1974
                  stdin_parts: [('(echo hi)\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1976
                  stdin_parts: [('shell {echo hi}\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 1994
                  stdin_parts: [('(echo hi; echo bye)\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 1996
                  stdin_parts: [('shell {echo hi; echo bye}\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2014
                  stdin_parts: [('( (echo hi; echo bye ) )\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2016
                  stdin_parts: [('shell { shell {echo hi; echo bye } }\n')]
                )
              ]
            )
          ]
          spids: [1936]
        )
      spids: [1932 1935]
    )
    (command.FuncDef
      name: brace-group
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2042
                  stdin_parts: [('{ echo hi; }\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2044
                  stdin_parts: [('do { echo hi; }\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2062
                  stdin_parts: [('{ echo hi; echo bye; }\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2064
                  stdin_parts: [('do { echo hi; echo bye; }\n')]
                )
              ]
            )
          ]
          spids: [2024]
        )
      spids: [2020 2023]
    )
    (command.FuncDef
      name: fork
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2090
                  stdin_parts: [('sleep 1&\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2092
                  stdin_parts: [('fork sleep 1\n')]
                )
              ]
            )
          ]
          spids: [2072]
        )
      spids: [2068 2071]
    )
    (command.FuncDef
      name: var-sub
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2118
                  stdin_parts: [('echo $foo\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2120
                  stdin_parts: [('echo $foo\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2138
                  stdin_parts: [('echo $foo ${bar} "__${bar}__"\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2140
                  stdin_parts: [('echo $foo $(bar) "__$(bar)__"\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2158
                  stdin_parts: [('echo ${foo:-default}\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2160
                  stdin_parts: [("echo $(foo or 'default')\n")]
                )
              ]
            )
          ]
          spids: [2100]
        )
      spids: [2096 2099]
    )
    (command.FuncDef
      name: command-sub
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2187
                  stdin_parts: [('echo $(echo hi)\n') ('echo `echo hi`\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2190
                  stdin_parts: [('echo $[echo hi]\n') ('echo $[echo hi]\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2208
                  stdin_parts: [('echo "__$(echo hi)__"\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2210
                  stdin_parts: [('echo "__$[echo hi]__"\n')]
                )
              ]
            )
          ]
          spids: [2168]
        )
      spids: [2164 2167]
    )
    (command.FuncDef
      name: proc-sub
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2237
                  stdin_parts: [('echo <(echo hi) >(echo hi)\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2239
                  stdin_parts: [('echo $<[echo hi] $>[echo hi]\n')]
                )
              ]
            )
          ]
          spids: [2219]
        )
      spids: [2215 2218]
    )
    (command.FuncDef
      name: arith-sub
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2265
                  stdin_parts: [('echo __$((  1+ 2 ))__\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2267
                  stdin_parts: [('echo __$(  1+ 2 )__\n')]
                )
              ]
            )
            (command.ControlFlow token:<ControlFlow_Return return>)
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2292
                  stdin_parts: [('echo $[  1+ 2 ]\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2294
                  stdin_parts: [('echo $(  1+ 2 )\n')]
                )
              ]
            )
          ]
          spids: [2247]
        )
      spids: [2243 2246]
    )
    (command.FuncDef
      name: arith-ops
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2352
                  stdin_parts: [('echo $(( a > 0 ? 2**3 : 3/2 ))\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2354
                  stdin_parts: [('echo $(( 2^3 if a > 0 else 3 div 2 ))\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2372
                  stdin_parts: [('echo $(( a << 1 | b & 1 ))\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2374
                  stdin_parts: [('echo $(( a << 1 .| b .& 1 ))\n')]
                )
              ]
            )
          ]
          spids: [2303]
        )
      spids: [2299 2302]
    )
    (command.FuncDef
      name: dbracket
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2403
                  stdin_parts: [('[[ -d / ]] && echo "is dir"\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2405
                  stdin_parts: [('isDir(\'/\') && echo "is dir"\n')]
                )
              ]
            )
          ]
          spids: [2385]
        )
      spids: [2381 2384]
    )
    (command.FuncDef
      name: escaped-literal
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2431
                  stdin_parts: [('echo \\$  \\  \\n "\\$" "\\n"\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2433
                  stdin_parts: [('echo \'$\'  \' \' \'n\' "\\$" "\\n"\n')]
                )
              ]
            )
            (command.ControlFlow token:<ControlFlow_Return return>)
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2458
                  stdin_parts: [('echo \\$\\ \\$\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2460
                  stdin_parts: [("echo '$ $'\n")]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2483
                  stdin_parts: [('echo \\\n') ('  hi\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2486
                  stdin_parts: [('echo \\\n') ('  hi\n')]
                )
              ]
            )
          ]
          spids: [2413]
        )
      spids: [2409 2412]
    )
    (command.FuncDef
      name: words
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2521
                  stdin_parts: [("echo foo'bar'\n") ("echo foo'bar'$baz\n")]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2524
                  stdin_parts: [("echo 'foobar'\n") ('echo "foobar$baz"\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2550
                  stdin_parts: [("echo ~/'name with spaces'\n")]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2552
                  stdin_parts: [('echo "$HOME/name with spaces"\n')]
                )
              ]
            )
          ]
          spids: [2494]
        )
      spids: [2490 2493]
    )
    (command.FuncDef
      name: time-block
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2578
                  stdin_parts: [('time ls\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2580
                  stdin_parts: [('time ls\n')]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2600
                  stdin_parts: [('time while false; do\n') ('  echo $i\n') ('done\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2604
                  stdin_parts: [('time while false {\n') ('  echo $i\n') ('}\n')]
                )
              ]
            )
            (command.ControlFlow token:<ControlFlow_Return return>)
            (command.SimpleCommand
              words: [{(osh0-oil3)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <OSH>)}
                  here_end_span_id: 2632
                  stdin_parts: [('time {\n') ('  echo one\n') ('  echo two\n') ('}\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(SQ <OIL>)}
                  here_end_span_id: 2637
                  stdin_parts: [('time {\n') ('  echo one\n') ('  echo two\n') ('}\n')]
                )
              ]
            )
          ]
          spids: [2560]
        )
      spids: [2556 2559]
    )
    (command.Assignment
      keyword: Assign_Readonly
      flags: [-a]
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:PASSING spids:[2645])
          op: Equal
          rhs: 
            {
              (word_part.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: [2645]
        )
      ]
      spids: [2641]
    )
    (command.FuncDef
      name: all-passing
      body: 
        (command.BraceGroup
          children: [
            (C {(run-all)} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name PASSING>
                    bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                    spids: [2754 2759]
                  )
                )
              }
            )
          ]
          spids: [2748]
        )
      spids: [2744 2747]
    )
    (command.FuncDef
      name: run-for-release
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:out_dir spids:[2774])
                  op: Equal
                  rhs: {(_tmp/osh2oil)}
                  spids: [2774]
                )
              ]
              spids: [2772]
            )
            (C {(mkdir)} {(-p)} {($ VSub_DollarName '$out_dir')})
            (command.Pipeline
              children: [(C {(all-passing)}) (C {(tee)} {($ VSub_DollarName '$out_dir') (/log.txt)})]
              negated: F
            )
            (C {(echo)} {(DQ ('Wrote ') ($ VSub_DollarName '$out_dir') (/log.txt))})
          ]
          spids: [2769]
        )
      spids: [2765 2768]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)