(command.CommandList
  children: [
    (C {<set>} {<-o>} {<nounset>})
    (C {<set>} {<-o>} {<pipefail>})
    (C {<set>} {<-o>} {<errexit>})
    (command.ShFunction
      name: make-zip
      body: 
        (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: 
        (BraceGroup
          children: [
            (C {<set>} {<Id.Lit_Other '+'> <o>} {<errexit>})
            (C {<'_bin/hello.ovm'>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (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: 
        (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: 
        (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
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    {<'../../_release/'> ($ Id.VSub_DollarName '$name') <-> 
                      ($ Id.VSub_DollarName '$version') <.tar.gz>
                    }
                )
              ]
              do_fork: T
            )
            (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: 
        (BraceGroup
          children: [
            (C {<_tarball>} {<hello>} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<head>} {<-n>} {<1>} {<'build/testdata/hello-version.txt'>})
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: oil-tar
      body: 
        (BraceGroup
          children: [
            (C {<_tarball>} {<oil>} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<head>} {<-n>} {<1>} {<oil-version.txt>})
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: ovm-main-func
      body: 
        (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])]
                  do_fork: T
                )
                (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])]
                  do_fork: T
                )
                (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])]
              do_fork: T
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)