(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:THIS_DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (AndOr
                        ops: [Op_DAmp]
                        children: [
                          (C {(cd)} 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(dirname)} {($ VSub_Number '$0')})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [38 42]
                              )
                            }
                          )
                          (C {(pwd)})
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [35 47]
              )
            }
          spids: [34]
        )
      ]
      spids: [32]
    )
    (C {(source)} {($ VSub_Name '$THIS_DIR') (/common.sh)})
    (FuncDef
      name: opyc
      body: 
        (BraceGroup
          children: [(C {(python)} {(bin/opy_.pyc)} {(opyc)} {(DQ ($ VSub_At '$@'))})]
          spids: [69]
        )
      spids: [65 68]
    )
    (FuncDef
      name: oil-opy
      body: (BraceGroup children:[(C {(_tmp/oil-opy/bin/oil)} {(DQ ($ VSub_At '$@'))})] spids:[89])
      spids: [85 88]
    )
    (FuncDef
      name: oil-unit
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(_tmp) (Lit_Slash /) (repo-with-opy)}
                          )
                        spids: [134 140]
                      )
                    }
                  spids: [133]
                )
              ]
              spids: [131]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:vm)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(cpython)})
                        spids: [146 150]
                      )
                    }
                  spids: [145]
                )
              ]
              spids: [143]
            )
            (C {(pushd)} {($ VSub_Name '$dir')})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:n) op:Equal rhs:{(0)} spids:[170])]
              spids: [168]
            )
            (Assignment
              keyword: Assign_Local
              flags: [-a]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:failures)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [178]
                )
              ]
              spids: [174]
            )
            (ForEach
              iter_name: t
              iter_words: [
                (BracedWordTree
                  parts: [
                    (BracedAltPart words:[{(asdl)} {(core)} {(osh)}])
                    (/)
                    (Lit_Other '*')
                    (_test.pyc)
                  ]
                )
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} {($ VSub_Name '$t')})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(test)} {($ VSub_Name '$vm')} {(Lit_Other '=')} {(byterun)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(set)} {(Lit_Other '+') (o)} {(errexit)})
                            (C {(set)} {(Lit_Other '+') (o)} {(nounset)})
                            (C {(opyc)} {(run)} {($ VSub_Name '$t')})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:status)
                                  op: Equal
                                  rhs: {($ VSub_QMark '$?')}
                                  spids: [265]
                                )
                              ]
                              spids: [265]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: (C {(test)} {($ VSub_Name '$status')} {(-ne)} {(0)})
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:failures)
                                          op: Equal
                                          rhs: 
                                            {
                                              (ArrayLiteralPart
                                                words: [
                                                  {
                                                    (DQ 
                                                      (BracedVarSub
                                                        token: <VSub_Name failures>
                                                        bracket_op: (WholeArray op_id:Lit_At)
                                                        spids: [287 292]
                                                      )
                                                    )
                                                  }
                                                  {($ VSub_Name '$t')}
                                                ]
                                              )
                                            }
                                          spids: [284]
                                        )
                                      ]
                                      spids: [284]
                                    )
                                  ]
                                  spids: [16777215 281]
                                )
                              ]
                              spids: [16777215 299]
                            )
                            (DParen
                              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:n))
                            )
                          ]
                          spids: [16777215 226]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(test)} {($ VSub_Name '$vm')} {(Lit_Other '=')} {(cpython)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [{(python)} {($ VSub_Name '$t')}]
                              more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[326])]
                            )
                          ]
                          spids: [312 323]
                        )
                      ]
                      else_action: [(C {(die)} {(DQ ('Invalid VM ') ($ VSub_Name '$vm'))})]
                      spids: [339 350]
                    )
                  ]
                  spids: [206 353]
                )
              spids: [193 204]
            )
            (C {(popd)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {($ VSub_Name '$vm')} {(Lit_Other '=')} {(byterun)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('Ran ') ($ VSub_Name '$n') (' tests, ') 
                          (BracedVarSub
                            token: <VSub_Name failures>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [380 386]
                          ) (' failures')
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name failures>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [394 399]
                          )
                        )
                      }
                    )
                  ]
                  spids: [16777215 371]
                )
              ]
              spids: [16777215 403]
            )
          ]
          spids: [128]
        )
      spids: [124 127]
    )
    (FuncDef
      name: oil-unit-byterun
      body: (BraceGroup children:[(C {(oil-unit)} {(SQ )} {(byterun)})] spids:[412])
      spids: [408 411]
    )
    (Assignment
      keyword: Assign_Readonly
      flags: [-a]
      pairs: [
        (assign_pair
          lhs: (LhsName name:FAILED)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                words: [
                  {(asdl/arith_parse_test.pyc)}
                  {(core/glob_test.pyc)}
                  {(core/lexer_gen_test.pyc)}
                  {(osh/lex_test.pyc)}
                ]
              )
            }
          spids: [429]
        )
      ]
      spids: [425]
    )
    (FuncDef
      name: oil-byterun-failed
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: t
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name FAILED>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [496 501]
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(echo)})
                    (C {(echo)} {(---)})
                    (C {(echo)} {(---)} {($ VSub_Name '$t')})
                    (C {(echo)} {(---)})
                    (C {(pushd)} {(_tmp/oil-opy)})
                    (C {(opyc)} {(run)} {($ VSub_Name '$t')})
                    (C {(popd)})
                  ]
                  spids: [505 545]
                )
              spids: [494 503]
            )
          ]
          spids: [481]
        )
      spids: [477 480]
    )
    (FuncDef
      name: byterun-unit
      body: 
        (BraceGroup
          children: [
            (C {(pushd)} {($ VSub_Name '$THIS_DIR') (/..)})
            (ForEach
              iter_name: t
              iter_words: [{(opy/byterun/test_) (Lit_Other '*') (.py)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(echo)})
                    (C {(echo)} {(DQ ('*** ') ($ VSub_Name '$t'))})
                    (C {(echo)})
                    (SimpleCommand
                      words: [{($ VSub_Name '$t')}]
                      more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[591])]
                    )
                  ]
                  spids: [574 597]
                )
              spids: [568 572]
            )
            (C {(popd)})
          ]
          spids: [554]
        )
      spids: [550 553]
    )
    (FuncDef
      name: generator-exception
      body: 
        (BraceGroup
          children: [
            (C {(testdata/generator_exception.py)})
            (C {(../bin/opyc)} {(run)} {(testdata/generator_exception.py)})
          ]
          spids: [623]
        )
      spids: [619 622]
    )
    (FuncDef
      name: generator-exception-diff
      body: 
        (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)})
            (SimpleCommand
              words: [{(../bin/opyc)} {(dis)} {(testdata/generator_exception.pyc)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(_tmp/ge-cpython.txt)}
                  spids: [699]
                )
              ]
            )
            (SimpleCommand
              words: [{(../bin/opyc)} {(dis)} {(_tmp/ge-opy.pyc)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(_tmp/ge-opy.txt)}
                  spids: [710]
                )
              ]
            )
            (C {(diff)} {(-u)} 
              (BracedWordTree
                parts: [(_tmp/ge-) (BracedAltPart words:[{(cpython)} {(opy)}]) (.txt)]
              )
            )
          ]
          spids: [643]
        )
      spids: [639 642]
    )
    (FuncDef
      name: regex-compile
      body: 
        (BraceGroup
          children: [
            (C {(testdata/regex_compile.py)})
            (C {(echo)} {(---)})
            (C {(../bin/opyc)} {(run)} {(testdata/regex_compile.py)})
          ]
          spids: [742]
        )
      spids: [738 741]
    )
    (FuncDef
      name: re-dis
      body: 
        (BraceGroup
          children: [(C {(../bin/opyc)} {(dis)} {(/usr/lib/python2.7/sre_parse.pyc)})]
          spids: [766]
        )
      spids: [762 765]
    )
    (FuncDef
      name: spec
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:action)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [791]
                )
              ]
              spids: [789]
            )
            (C {(shift)})
            (C {(pushd)} {($ VSub_Name '$THIS_DIR') (/..)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:stub)
                  op: Equal
                  rhs: {(opy/_tmp/repo-with-opy/bin/osh-byterun)}
                  spids: [829]
                )
              ]
              spids: [827]
            )
            (SimpleCommand
              words: [{(test/spec.sh)} {($ VSub_Name '$action')} {(DQ ($ VSub_At '$@'))}]
              more_env: [(env_pair name:OSH_OVM val:{($ VSub_Name '$stub')} spids:[834])]
            )
            (C {(popd)})
          ]
          spids: [785]
        )
      spids: [781 784]
    )
    (FuncDef
      name: opy-speed-test
      body: 
        (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)})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:n) op:Equal rhs:{(10000)} spids:[894])]
              spids: [892]
            )
            (C {(echo)} {(PYTHON)})
            (TimeBlock pipeline:(C {(python)} {(_tmp/speed.opyc)} {($ VSub_Name '$n')}))
            (C {(echo)} {(OPY)})
            (TimeBlock pipeline:(C {(opyc-run)} {(_tmp/speed.opyc)} {($ VSub_Name '$n')}))
            (C {(echo)} {(PYTHON)})
            (TimeBlock pipeline:(C {(python)} {(_tmp/speed_main.pyc)} {($ VSub_Name '$n')}))
            (C {(echo)} {(OPY)})
            (TimeBlock
              pipeline: (C {(opyc-run)} {(_tmp/speed_main.pyc)} {($ VSub_Name '$n')})
            )
          ]
          spids: [862]
        )
      spids: [858 861]
    )
    (FuncDef
      name: gold
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: script
              iter_words: [{(gold/) (Lit_Other '*') (.py)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{($ VSub_Name '$script')}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(_tmp/gold-cpython.txt)}
                          spids: [1017]
                        )
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 2
                          arg_word: {(1)}
                          spids: [1021]
                        )
                      ]
                    )
                    (SimpleCommand
                      words: [{(../bin/opyc)} {(run)} {($ VSub_Name '$script')}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(_tmp/gold-opy-byterun.txt)}
                          spids: [1031]
                        )
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 2
                          arg_word: {(1)}
                          spids: [1035]
                        )
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(diff)} {(-u)} 
                                  (BracedWordTree
                                    parts: [
                                      (_tmp/gold-)
                                      (BracedAltPart
                                        words: [{(cpython)} {(opy-byterun)}]
                                      )
                                      (.txt)
                                    ]
                                  )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(echo)} {(DQ ('OK ') ($ VSub_Name '$script'))})]
                          spids: [16777215 1055]
                        )
                      ]
                      else_action: [
                        (C {(echo)} {(DQ ('FAIL ') ($ VSub_Name '$script'))})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                      spids: [1066 1082]
                    )
                  ]
                  spids: [1011 1085]
                )
              spids: [1005 1009]
            )
          ]
          spids: [997]
        )
      spids: [993 996]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)