(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-o>} {<nounset>})
    (C {<Id.KW_Set set>} {<-o>} {<pipefail>})
    (C {<Id.KW_Set set>} {<-o>} {<errexit>})
    (command.ShFunction
      name: make-zip
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'out='> <_tmp/make-zip-test.zip>})
            (C {<build/make_zip.py>} {($ Id.VSub_DollarName '$out')} {<_build/runpy-deps-py.txt>})
            (C {<unzip>} {<-l>} {($ Id.VSub_DollarName '$out')})
          ]
        )
    )
    (command.ShFunction
      name: hello-bundle
      body: 
        (command.BraceGroup
          children: [
            (C {<Id.KW_Set set>} {<Id.Lit_Other '+'> <o>} {<errexit>})
            (C {<_bin/hello.ovm>})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<test>} {($ Id.VSub_QMark '$?')} {<Id.Lit_Equals '='>} {<1>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<echo>} {<OK>})]
                  spids: [80 91]
                )
              ]
              else_action: [
                (C {<echo>} {(SQ <'FAIL: expected exit code 1'>)})
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: oil-bundle
      body: 
        (command.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'>)})
          ]
        )
    )
    (command.ShFunction
      name: _tarball
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'name='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<hello>})
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'version='> 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<0.0.0>})
                )
              }
            )
            (C {<local>} {<Id.Lit_VarLike 'tmp='> <_tmp/> (${ Id.VSub_Name name) <-tar-test>})
            (C {<rm>} {<-r>} {<-f>} {($ Id.VSub_DollarName '$tmp')})
            (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$tmp')})
            (C {<cd>} {($ Id.VSub_DollarName '$tmp')})
            (command.Simple
              words: [{<tar>} {<--extract>} {<-z>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Less '<'>
                  fd: -1
                  arg_word: 
                    {<../../_release/> ($ Id.VSub_DollarName '$name') <-> 
                      ($ Id.VSub_DollarName '$version') <.tar.gz>
                    }
                )
              ]
            )
            (C {<cd>} {($ Id.VSub_DollarName '$name') <-> ($ Id.VSub_DollarName '$version')})
            (C {<./configure>})
            (C {<local>} {<Id.Lit_VarLike 'bin='> <_bin/> (${ Id.VSub_Name name) <.ovm>})
            (command.TimeBlock pipeline:(C {<make>} {($ Id.VSub_DollarName '$bin')}))
            (C {($ Id.VSub_DollarName '$bin')} {<--version>})
          ]
        )
    )
    (command.ShFunction
      name: hello-tar
      body: 
        (command.BraceGroup
          children: [
            (C {<_tarball>} {<hello>} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [(C {<head>} {<-n>} {<1>} {<build/testdata/hello-version.txt>})]
                    )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: oil-tar
      body: 
        (command.BraceGroup
          children: [
            (C {<_tarball>} {<oil>} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [(C {<head>} {<-n>} {<1>} {<oil-version.txt>})]
                    )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: ovm-main-func
      body: 
        (command.BraceGroup
          children: [
            (C {<echo>} {<--->})
            (C {<echo>} {(SQ <'Running nothing'>)})
            (C {<echo>} {<--->})
            (C {<local>} {<Id.Lit_VarLike 'ovm='> <_build/hello/ovm-dbg>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{($ Id.VSub_DollarName '$ovm')}]
                  more_env: [(env_pair name:_OVM_RUN_SELF val:{<0>} spids:[362])]
                )
                (C {<true>})
              ]
            )
            (C {<echo>} {<--->})
            (C {<echo>} {(SQ <'Running bytecode.zip'>)})
            (C {<echo>} {<--->})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{($ Id.VSub_DollarName '$ovm')} {<_build/hello/bytecode.zip>}]
                  more_env: [(env_pair name:_OVM_RUN_SELF val:{<0>} spids:[391])]
                )
                (C {<true>})
              ]
            )
            (C {<echo>} {<--->})
            (C {<echo>} {(SQ <'Running lib.pyc'>)})
            (C {<echo>} {<--->})
            (command.Simple
              words: [{($ Id.VSub_DollarName '$ovm')} {<build/testdata/lib.pyc>}]
              more_env: [(env_pair name:_OVM_RUN_SELF val:{<0>} spids:[426])]
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)