(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-o>} {<nounset>})
    (C {<Id.KW_Set set>} {<-o>} {<pipefail>})
    (C {<Id.KW_Set set>} {<-o>} {<errexit>})
    (C {<readonly>} 
      {<Id.Lit_VarLike 'THIS_DIR='> 
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          command_list: 
            (command.CommandList
              children: [
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<cd>} 
                      {
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          command_list: 
                            (command.CommandList
                              children: [(C {<dirname>} {($ Id.VSub_Number '$0')})]
                            )
                        )
                      }
                    )
                    (C {<pwd>})
                  ]
                )
              ]
            )
        )
      }
    )
    (C {<source>} {($ Id.VSub_DollarName '$THIS_DIR') </common.sh>})
    (command.ShFunction
      name: opyc
      body: 
        (command.BraceGroup
          children: [(C {<python>} {<bin/opy_.pyc>} {<opyc>} {(DQ ($ Id.VSub_At '$@'))})]
        )
    )
    (command.ShFunction
      name: oil-opy
      body: (command.BraceGroup children:[(C {<_tmp/oil-opy/bin/oil>} {(DQ ($ Id.VSub_At '$@'))})])
    )
    (command.ShFunction
      name: oil-unit
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'dir='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {<_tmp> <Id.Lit_Slash /> <repo-with-opy>}
                    )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'vm='> 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<cpython>})
                )
              }
            )
            (C {<pushd>} {($ Id.VSub_DollarName '$dir')})
            (C {<local>} {<Id.Lit_VarLike 'n='> <0>})
            (C {<local>} {<-a>} {<Id.Lit_VarLike 'failures='> (sh_array_literal left:<Id.Op_LParen _>)})
            (command.ForEach
              iter_name: t
              iter_words: [
                (word.BracedTree
                  parts: [
                    (word_part.BracedTuple words:[{<asdl>} {<core>} {<osh>}])
                    </>
                    <Id.Lit_Star '*'>
                    <_test.pyc>
                  ]
                )
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} {($ Id.VSub_DollarName '$t')})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<test>} {($ Id.VSub_DollarName '$vm')} {<Id.Lit_Equals '='>} 
                                  {<byterun>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<Id.KW_Set set>} {<Id.Lit_Other '+'> <o>} {<errexit>})
                            (C {<Id.KW_Set set>} {<Id.Lit_Other '+'> <o>} {<nounset>})
                            (C {<opyc>} {<run>} {($ Id.VSub_DollarName '$t')})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:status)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [265]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<test>} {($ Id.VSub_DollarName '$status')} {<-ne>} {<0>})
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:failures)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (sh_array_literal
                                                left: <Id.Op_LParen _>
                                                words: [
                                                  {
                                                    (DQ 
                                                      (braced_var_sub
                                                        token: <Id.VSub_Name failures>
                                                        bracket_op: 
                                                          (bracket_op.WholeArray
                                                            op_id: Id.Lit_At
                                                          )
                                                      )
                                                    )
                                                  }
                                                  {($ Id.VSub_DollarName '$t')}
                                                ]
                                              )
                                            }
                                          spids: [284]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [270 281]
                                )
                              ]
                            )
                            (command.DParen
                              child: 
                                (arith_expr.UnaryAssign
                                  op_id: Id.Node_PostDPlus
                                  child: (sh_lhs_expr.Name name:n)
                                )
                            )
                          ]
                          spids: [215 226]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<test>} {($ Id.VSub_DollarName '$vm')} {<Id.Lit_Equals '='>} 
                                  {<cpython>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [{<python>} {($ Id.VSub_DollarName '$t')}]
                              more_env: [(env_pair name:PYTHONPATH val:{<.>} spids:[326])]
                            )
                          ]
                          spids: [312 323]
                        )
                      ]
                      else_action: [(C {<die>} {(DQ <'Invalid VM '> ($ Id.VSub_DollarName '$vm'))})]
                    )
                  ]
                )
            )
            (C {<popd>})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<test>} {($ Id.VSub_DollarName '$vm')} {<Id.Lit_Equals '='>} {<byterun>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<echo>} 
                      {
                        (DQ <'Ran '> ($ Id.VSub_DollarName '$n') <' tests, '> 
                          (braced_var_sub
                            token: <Id.VSub_Name failures>
                            prefix_op: (Id.VSub_Pound)
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          ) <' failures'>
                        )
                      }
                    )
                    (C {<echo>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name failures>
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          )
                        )
                      }
                    )
                  ]
                  spids: [360 371]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: oil-unit-byterun
      body: (command.BraceGroup children:[(C {<oil-unit>} {(SQ )} {<byterun>})])
    )
    (C {<readonly>} {<-a>} 
      {<Id.Lit_VarLike 'FAILED='> 
        (sh_array_literal
          left: <Id.Op_LParen _>
          words: [
            {<asdl/arith_parse_test.pyc>}
            {<core/glob_test.pyc>}
            {<core/lexer_gen_test.pyc>}
            {<osh/lex_test.pyc>}
          ]
        )
      }
    )
    (command.ShFunction
      name: oil-byterun-failed
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: t
              iter_words: [
                {
                  (DQ 
                    (braced_var_sub
                      token: <Id.VSub_Name FAILED>
                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>})
                    (C {<echo>} {<--->})
                    (C {<echo>} {<--->} {($ Id.VSub_DollarName '$t')})
                    (C {<echo>} {<--->})
                    (C {<pushd>} {<_tmp/oil-opy>})
                    (C {<opyc>} {<run>} {($ Id.VSub_DollarName '$t')})
                    (C {<popd>})
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: byterun-unit
      body: 
        (command.BraceGroup
          children: [
            (C {<pushd>} {($ Id.VSub_DollarName '$THIS_DIR') </..>})
            (command.ForEach
              iter_name: t
              iter_words: [{<opy/byterun/test_> <Id.Lit_Star '*'> <.py>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>})
                    (C {<echo>} {(DQ <'*** '> ($ Id.VSub_DollarName '$t'))})
                    (C {<echo>})
                    (command.Simple
                      words: [{($ Id.VSub_DollarName '$t')}]
                      more_env: [(env_pair name:PYTHONPATH val:{<.>} spids:[591])]
                    )
                  ]
                )
            )
            (C {<popd>})
          ]
        )
    )
    (command.ShFunction
      name: generator-exception
      body: 
        (command.BraceGroup
          children: [
            (C {<testdata/generator_exception.py>})
            (C {<../bin/opyc>} {<run>} {<testdata/generator_exception.py>})
          ]
        )
    )
    (command.ShFunction
      name: generator-exception-diff
      body: 
        (command.BraceGroup
          children: [
            (C {<rm>} {<-f>} {<-v>} {<testdata/generator_exception.pyc>})
            (C {<testdata/generator_exception.py>})
            (C {<pushd>} {<testdata>})
            (C {<python>} {<-c>} {(SQ <'import generator_exception'>)})
            (C {<popd>})
            (C {<echo>} {<--->})
            (C {<../bin/opyc>} {<compile>} {<testdata/generator_exception.py>} {<_tmp/ge-opy.pyc>})
            (command.Simple
              words: [{<../bin/opyc>} {<dis>} {<testdata/generator_exception.pyc>}]
              redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<_tmp/ge-cpython.txt>})]
            )
            (command.Simple
              words: [{<../bin/opyc>} {<dis>} {<_tmp/ge-opy.pyc>}]
              redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<_tmp/ge-opy.txt>})]
            )
            (C {<diff>} {<-u>} 
              (word.BracedTree
                parts: [<_tmp/ge-> (word_part.BracedTuple words:[{<cpython>} {<opy>}]) <.txt>]
              )
            )
          ]
        )
    )
    (command.ShFunction
      name: regex-compile
      body: 
        (command.BraceGroup
          children: [
            (C {<testdata/regex_compile.py>})
            (C {<echo>} {<--->})
            (C {<../bin/opyc>} {<run>} {<testdata/regex_compile.py>})
          ]
        )
    )
    (command.ShFunction
      name: re-dis
      body: 
        (command.BraceGroup
          children: [(C {<../bin/opyc>} {<dis>} {</usr/lib/python2.7/sre_parse.pyc>})]
        )
    )
    (command.ShFunction
      name: spec
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'action='> ($ Id.VSub_Number '$1')})
            (C {<shift>})
            (C {<pushd>} {($ Id.VSub_DollarName '$THIS_DIR') </..>})
            (C {<local>} {<Id.Lit_VarLike 'stub='> <opy/_tmp/repo-with-opy/bin/osh-byterun>})
            (command.Simple
              words: [{<test/spec.sh>} {($ Id.VSub_DollarName '$action')} {(DQ ($ Id.VSub_At '$@'))}]
              more_env: [(env_pair name:OSH_OVM val:{($ Id.VSub_DollarName '$stub')} spids:[834])]
            )
            (C {<popd>})
          ]
        )
    )
    (command.ShFunction
      name: opy-speed-test
      body: 
        (command.BraceGroup
          children: [
            (C {<opyc-compile>} {<testdata/speed.py>} {<_tmp/speed.pyc>})
            (C {<opyc-compile>} {<testdata/speed_main.py>} {<_tmp/speed_main.pyc>})
            (C {<cp>} {<_tmp/speed.pyc>} {<_tmp/speed.opyc>})
            (C {<local>} {<Id.Lit_VarLike 'n='> <10000>})
            (C {<echo>} {<PYTHON>})
            (command.TimeBlock
              pipeline: (C {<python>} {<_tmp/speed.opyc>} {($ Id.VSub_DollarName '$n')})
            )
            (C {<echo>} {<OPY>})
            (command.TimeBlock
              pipeline: (C {<opyc-run>} {<_tmp/speed.opyc>} {($ Id.VSub_DollarName '$n')})
            )
            (C {<echo>} {<PYTHON>})
            (command.TimeBlock
              pipeline: (C {<python>} {<_tmp/speed_main.pyc>} {($ Id.VSub_DollarName '$n')})
            )
            (C {<echo>} {<OPY>})
            (command.TimeBlock
              pipeline: (C {<opyc-run>} {<_tmp/speed_main.pyc>} {($ Id.VSub_DollarName '$n')})
            )
          ]
        )
    )
    (command.ShFunction
      name: gold
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: script
              iter_words: [{<gold/> <Id.Lit_Star '*'> <.py>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [{($ Id.VSub_DollarName '$script')}]
                      redirects: [
                        (redir.Redir
                          op: <Id.Redir_Great '>'>
                          fd: -1
                          arg_word: {<_tmp/gold-cpython.txt>}
                        )
                        (redir.Redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          fd: 2
                          arg_word: {<1>}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{<../bin/opyc>} {<run>} {($ Id.VSub_DollarName '$script')}]
                      redirects: [
                        (redir.Redir
                          op: <Id.Redir_Great '>'>
                          fd: -1
                          arg_word: {<_tmp/gold-opy-byterun.txt>}
                        )
                        (redir.Redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          fd: 2
                          arg_word: {<1>}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<diff>} {<-u>} 
                                  (word.BracedTree
                                    parts: [
                                      <_tmp/gold->
                                      (word_part.BracedTuple
                                        words: [{<cpython>} {<opy-byterun>}]
                                      )
                                      <.txt>
                                    ]
                                  )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [(C {<echo>} {(DQ <'OK '> ($ Id.VSub_DollarName '$script'))})]
                          spids: [1040 1055]
                        )
                      ]
                      else_action: [
                        (C {<echo>} {(DQ <'FAIL '> ($ Id.VSub_DollarName '$script'))})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)