(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (FuncDef
      name: make-zip
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out)
                  op: Equal
                  rhs: {(_tmp/make-zip-test.zip)}
                  spids: [41]
                )
              ]
              spids: [39]
            )
            (C {(build/make_zip.py)} {($ VSub_Name '$out')} {(_build/runpy-deps-py.txt)})
            (C {(unzip)} {(-l)} {($ VSub_Name '$out')})
          ]
          spids: [36]
        )
      spids: [32 35]
    )
    (FuncDef
      name: hello-bundle
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(Lit_Other '+') (o)} {(errexit)})
            (C {(_bin/hello.ovm)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {($ VSub_QMark '$?')} {(Lit_Other '=')} {(1)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(OK)})]
                  spids: [-1 91]
                )
              ]
              else_action: [(C {(echo)} {(SQ <'FAIL: expected exit code 1'>)}) (C {(exit)} {(1)})]
              spids: [99 114]
            )
          ]
          spids: [66]
        )
      spids: [62 65]
    )
    (FuncDef
      name: oil-bundle
      body: 
        (BraceGroup
          children: [
            (C {(_bin/oil.ovm)} {(osh)} {(-c)} {(SQ <'echo hi'>)})
            (C {(ln)} {(-s)} {(-f)} {(oil.ovm)} {(_bin/osh)})
            (C {(_bin/osh)} {(-c)} {(SQ <'echo hi from osh'>)})
          ]
          spids: [123]
        )
      spids: [119 122]
    )
    (FuncDef
      name: _tarball
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(hello)})
                        spids: [169 173]
                      )
                    }
                  spids: [168]
                )
              ]
              spids: [166]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:version)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0.0.0)})
                        spids: [179 183]
                      )
                    }
                  spids: [178]
                )
              ]
              spids: [176]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tmp)
                  op: Equal
                  rhs: {(_tmp/) ($ VSub_Name '$name') (-tar-test)}
                  spids: [189]
                )
              ]
              spids: [187]
            )
            (C {(rm)} {(-r)} {(-f)} {($ VSub_Name '$tmp')})
            (C {(mkdir)} {(-p)} {($ VSub_Name '$tmp')})
            (C {(cd)} {($ VSub_Name '$tmp')})
            (SimpleCommand
              words: [{(tar)} {(--extract)} {(-z)}]
              redirects: [
                (Redir
                  op_id: Redir_Less
                  fd: -1
                  arg_word: 
                    {(../../_release/) ($ VSub_Name '$name') (-) ($ VSub_Name '$version') (.tar.gz)}
                  spids: [222]
                )
              ]
            )
            (C {(cd)} {($ VSub_Name '$name') (-) ($ VSub_Name '$version')})
            (C {(./configure)})
            (TimeBlock pipeline:(C {(make)} {(_bin/) (${ VSub_Name name) (.ovm-dbg)}))
            (C {(_bin/) (${ VSub_Name name) (.ovm-dbg)} {(--version)})
          ]
          spids: [163]
        )
      spids: [159 162]
    )
    (FuncDef
      name: hello-tar
      body: 
        (BraceGroup
          children: [
            (C {(_tarball)} {(hello)} 
              {
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(head)} {(-n)} {(1)} {(build/testdata/hello-version.txt)})]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [284 292]
                )
              }
            )
          ]
          spids: [277]
        )
      spids: [273 276]
    )
    (FuncDef
      name: oil-tar
      body: 
        (BraceGroup
          children: [
            (C {(_tarball)} {(oil)} 
              {
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(head)} {(-n)} {(1)} {(oil-version.txt)})]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [308 316]
                )
              }
            )
          ]
          spids: [301]
        )
      spids: [297 300]
    )
    (FuncDef
      name: ovm-main-func
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(---)})
            (C {(echo)} {(SQ <'Running nothing'>)})
            (C {(echo)} {(---)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ovm)
                  op: Equal
                  rhs: {(_build/hello/ovm-dbg)}
                  spids: [350]
                )
              ]
              spids: [348]
            )
            (AndOr
              children: [
                (SimpleCommand
                  words: [{($ VSub_Name '$ovm')}]
                  more_env: [(env_pair name:_OVM_RUN_SELF val:{(0)} spids:[355])]
                )
                (C {(true)})
              ]
              op_id: Op_DPipe
            )
            (C {(echo)} {(---)})
            (C {(echo)} {(SQ <'Running bytecode.zip'>)})
            (C {(echo)} {(---)})
            (AndOr
              children: [
                (SimpleCommand
                  words: [{($ VSub_Name '$ovm')} {(_build/hello/bytecode.zip)}]
                  more_env: [(env_pair name:_OVM_RUN_SELF val:{(0)} spids:[384])]
                )
                (C {(true)})
              ]
              op_id: Op_DPipe
            )
            (C {(echo)} {(---)})
            (C {(echo)} {(SQ <'Running lib.pyc'>)})
            (C {(echo)} {(---)})
            (SimpleCommand
              words: [{($ VSub_Name '$ovm')} {(build/testdata/lib.pyc)}]
              more_env: [(env_pair name:_OVM_RUN_SELF val:{(0)} spids:[419])]
            )
          ]
          spids: [328]
        )
      spids: [324 327]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)