(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (C {(source)} {(common.sh)})
    (C {(source)} {(compare.sh)})
    (FuncDef
      name: md5-manifest
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tree)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [59]
                )
              ]
              spids: [57]
            )
            (C {(pushd)} {($ VSub_Name "$tree")})
            (Pipeline
              children: [
                (C {(find)} {(.)} {(-type)} {(f)})
                (C {(sort)})
                (C {(xargs)} {(stat)} {(--format)} {(SQ <"%s %n">)})
                (C {(tee)} {(SIZES.txt)})
              ]
              negated: False
            )
            (Pipeline
              children: [
                (C {(find)} {(.)} {(-type)} {(f)})
                (C {(sort)})
                (C {(xargs)} {(md5sum)})
                (C {(tee)} {(MD5.txt)})
              ]
              negated: False
            )
            (C {(popd)})
          ]
          spids: [54]
        )
      spids: [50 53]
    )
    (FuncDef
      name: _compile-tree
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src_tree)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [142]
                )
              ]
              spids: [140]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest_tree)
                  op: Equal
                  rhs: {($ VSub_Number "$2")}
                  spids: [148]
                )
              ]
              spids: [146]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:version)
                  op: Equal
                  rhs: {($ VSub_Number "$3")}
                  spids: [154]
                )
              ]
              spids: [152]
            )
            (C {(shift)} {(3)})
            (C {(rm)} {(-r)} {(-f)} {($ VSub_Name "$dest_tree")})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:ext) op:Equal rhs:{(pyc)} spids:[180])]
              spids: [178]
            )
            (ForEach
              iter_name: rel_path
              iter_words: [{(DQ ($ VSub_At "$@"))}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} {($ VSub_Name "$rel_path")})
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dest)
                          op: Equal
                          rhs: 
                            {(${ VSub_Name dest_tree) (/) 
                              (BracedVarSub
                                token: <VSub_Name rel_path>
                                suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(.py)})
                                spids: [211 215]
                              ) (.) (${ VSub_Name ext)
                            }
                          spids: [206]
                        )
                      ]
                      spids: [204]
                    )
                    (C {(mkdir)} {(-p)} 
                      {
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(dirname)} {($ VSub_Name "$dest")})]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [226 230]
                        )
                      }
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_Name "$version")} {(Lit_Other "=")} {(stdlib)})
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(_stdlib-compile-one)} 
                              {($ VSub_Name "$src_tree") (/) (${ VSub_Name rel_path)} {($ VSub_Name "$dest")}
                            )
                          ]
                          spids: [-1 245]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_Name "$version")} {(Lit_Other "=")} {(compiler2)})
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(_compile2-one)} 
                              {($ VSub_Name "$src_tree") (/) (${ VSub_Name rel_path)} {($ VSub_Name "$dest")}
                            )
                          ]
                          spids: [259 270]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_Name "$version")} {(Lit_Other "=")} {(ccompile)})
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(_ccompile-one)} 
                              {($ VSub_Name "$src_tree") (/) (${ VSub_Name rel_path)} {($ VSub_Name "$dest")}
                            )
                          ]
                          spids: [284 295]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(test)} {($ VSub_Name "$version")} {(Lit_Other "=")} {(opy)})
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(_compile-one)} {($ VSub_Name "$src_tree") (/) (${ VSub_Name rel_path)} 
                              {($ VSub_Name "$dest")}
                            )
                          ]
                          spids: [309 320]
                        )
                      ]
                      else_action: [(C {(die)} {(DQ (bad))})]
                      spids: [334 344]
                    )
                  ]
                  spids: [196 347]
                )
              spids: [190 194]
            )
            (C {(tree)} {($ VSub_Name "$dest_tree")})
            (C {(md5-manifest)} {($ VSub_Name "$dest_tree")})
          ]
          spids: [137]
        )
      spids: [133 136]
    )
    (FuncDef
      name: _fill-opy-tree
      body: 
        (BraceGroup
          children: [(C {(echo)} {(TODO) (Lit_Other ":")} {(grammar)} {(pickle)})]
          spids: [367]
        )
      spids: [363 366]
    )
    (FuncDef
      name: compile-opy-tree
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src)
                  op: Equal
                  rhs: {($ VSub_Name "$PWD")}
                  spids: [391]
                )
              ]
              spids: [389]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:files)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(find)} {($ VSub_Name "$src")} {(-name)} {(_tmp)} {(-a)} {(-prune)} 
                                      {(-o)} {(-name)} {(SQ <"*.py">)} {(-a)} {(-printf)} {(SQ <"%P\\n">)}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub "$(">
                              spids: [400 432]
                            )
                          }
                        ]
                      )
                    }
                  spids: [397]
                )
              ]
              spids: [395]
            )
            (C {(_compile-tree)} {($ VSub_Name "$src")} {(_tmp/opy-ccompile/)} {(ccompile)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name files>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [464 469]
                  )
                )
              }
            )
            (C {(_compile-tree)} {($ VSub_Name "$src")} {(_tmp/opy-opy/)} {(opy)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name files>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [482 487]
                  )
                )
              }
            )
          ]
          spids: [386]
        )
      spids: [382 385]
    )
    (FuncDef
      name: _fill-osh-tree
      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 /) (osh-stdlib)}
                          )
                        spids: [503 509]
                      )
                    }
                  spids: [502]
                )
              ]
              spids: [500]
            )
            (C {(cp)} {(-v)} {(../osh/osh.asdl)} {($ VSub_Name "$dir") (/osh)})
            (C {(cp)} {(-v)} {(../core/runtime.asdl)} {($ VSub_Name "$dir") (/core)})
            (C {(cp)} {(-v)} {(../asdl/arith.asdl)} {($ VSub_Name "$dir") (/asdl)})
            (C {(ln)} {(-v)} {(-s)} {(-f)} {($ VSub_Name "$PWD") (/../core/libc.so)} 
              {($ VSub_Name "$dir") (/core)}
            )
          ]
          spids: [497]
        )
      spids: [493 496]
    )
    (FuncDef
      name: compile-osh-tree
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (AndOr
                                children: [(C {(cd)} {(..)}) (C {(echo)} {($ VSub_Name "$PWD")})]
                                op_id: Op_DAmp
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [569 579]
                      )
                    }
                  spids: [568]
                )
              ]
              spids: [566]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:files)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(find)} {($ VSub_Name "$src")} {(-name)} {(_tmp)} {(-a)} {(-prune)} 
                                      {(-o)} {(-name)} {(opy)} {(-a)} {(-prune)} {(-o)} {(-name)} {(tests)} {(-a)} {(-prune)} {(-o)} {(-name)} {(SQ <"*.py">)} 
                                      {(-a)} {(-printf)} {(SQ <"%P\\n">)}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub "$(">
                              spids: [587 643]
                            )
                          }
                        ]
                      )
                    }
                  spids: [584]
                )
              ]
              spids: [582]
            )
            (C {(_compile-tree)} {($ VSub_Name "$src")} {(_tmp/osh-ccompile/)} {(ccompile)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name files>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [658 663]
                  )
                )
              }
            )
            (C {(_compile-tree)} {($ VSub_Name "$src")} {(_tmp/osh-opy/)} {(opy)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name files>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [676 681]
                  )
                )
              }
            )
            (C {(_fill-osh-tree)} {(_tmp/osh-ccompile/)})
            (C {(_fill-osh-tree)} {(_tmp/osh-opy/)})
          ]
          spids: [563]
        )
      spids: [559 562]
    )
    (FuncDef
      name: zip-oil-tree
      body: 
        (BraceGroup
          children: [
            (C {(rm)} {(-f)} {(_tmp/oil.zip)})
            (C {(pushd)} {(_tmp/osh-ccompile)})
            (C {(zip)} {(../oil.zip)} {(-r)} {(.)})
            (C {(popd)})
          ]
          spids: [721]
        )
      spids: [717 720]
    )
    (FuncDef
      name: test-osh-tree
      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 /) (osh-opy)}
                          )
                        spids: [764 770]
                      )
                    }
                  spids: [763]
                )
              ]
              spids: [761]
            )
            (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:{(byterun)})
                        spids: [776 780]
                      )
                    }
                  spids: [775]
                )
              ]
              spids: [773]
            )
            (C {(pushd)} {($ VSub_Name "$dir")})
            (C {(mkdir)} {(-p)} {(_tmp)})
            (ForEach
              iter_name: t
              iter_words: [
                (BracedWordTree
                  parts: [
                    (BracedAltPart words:[{(asdl)}{(core)}{(osh)}])
                    (/)
                    (Lit_Other "*")
                    (_test.pyc)
                  ]
                )
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {($ VSub_Name "$t")}
                                      right: {(Lit_Other "*") (arith_parse_test.pyc)}
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                          spids: [-1 834]
                        )
                      ]
                      spids: [-1 840]
                    )
                    (C {(echo)} {($ VSub_Name "$t")})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(test)} {($ VSub_Name "$vm")} {(Lit_Other "=")} {(byterun)})
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [{(opy_)} {(run)} {($ VSub_Name "$t")}]
                              more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[875])]
                            )
                          ]
                          spids: [-1 872]
                        )
                      ]
                      else_action: [
                        (SimpleCommand
                          words: [{(python)} {($ VSub_Name "$t")}]
                          more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[888])]
                        )
                      ]
                      spids: [885 896]
                    )
                  ]
                  spids: [817 899]
                )
              spids: [804 815]
            )
            (C {(popd)})
          ]
          spids: [758]
        )
      spids: [754 757]
    )
    (FuncDef
      name: write-speed
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(_tmp/speed.py)}
                  spids: [916]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("def do_sum(n):\n") ("  sum = 0\n") ("  for i in xrange(n):\n") 
                        ("    sum += i\n") ("  print(sum)\n") ("\n") ("if __name__ == '__main__':\n") ("  import sys\n") 
                        ("  n = int(sys.argv[1])\n") ("  do_sum(n)\n") ("\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [919]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(_tmp/speed_main.py)}
                  spids: [936]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("import sys \n") ("import speed\n") ("\n") ("n = int(sys.argv[1])\n") 
                        ("speed.do_sum(n)\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [939]
                )
              ]
            )
          ]
          spids: [911]
        )
      spids: [907 910]
    )
    (FuncDef
      name: opy-speed-test
      body: 
        (BraceGroup
          children: [
            (C {(write-speed)})
            (C {(_compile-one)} {(_tmp/speed.py)} {(_tmp/speed.pyc)})
            (C {(_compile-one)} {(_tmp/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:[990])]
              spids: [988]
            )
            (C {(echo)} {(PYTHON)})
            (TimeBlock pipeline:(C {(python)} {(_tmp/speed.opyc)} {($ VSub_Name "$n")}))
            (C {(echo)} {(OPY)})
            (TimeBlock
              pipeline: (C {(opy_)} {(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 {(opy_)} {(run)} {(_tmp/speed_main.pyc)} {($ VSub_Name "$n")})
            )
          ]
          spids: [954]
        )
      spids: [950 953]
    )
    (FuncDef
      name: byterun-speed-test
      body: 
        (BraceGroup
          children: [
            (C {(write-speed)})
            (C {(echo)} {(OLD)} {(BYTERUN)})
            (TimeBlock
              pipeline: (C {(_byterun)} {($ VSub_Name "$PWD") (/_tmp/speed_main.py)} {(10000)})
            )
            (TimeBlock
              pipeline: (C {(_byterun)} {($ VSub_Name "$PWD") (/_tmp/speed.py)} {(10000)})
            )
          ]
          spids: [1084]
        )
      spids: [1080 1083]
    )
    (FuncDef
      name: _byterun
      body: 
        (BraceGroup
          children: [
            (C {(pushd)} {(TildeSubPart prefix:"") (/git/other/byterun)})
            (C {(python)} {(-m)} {(byterun.__main__)} {(DQ ($ VSub_At "$@"))})
            (C {(popd)})
          ]
          spids: [1125]
        )
      spids: [1121 1124]
    )
    (FuncDef
      name: opy-parse-on-byterun
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:arg)
                  op: Equal
                  rhs: {($ VSub_Name "$PWD") (/testdata/hello_py2.py)}
                  spids: [1206]
                )
              ]
              spids: [1204]
            )
            (C {(pushd)} {(_tmp/opy-opy)})
            (C {(opyg)} {(run)} {(opy_main.pyc)} {(-g)} {($ VSub_Name "$GRAMMAR")} {(parse)} 
              {($ VSub_Name "$arg")}
            )
            (C {(popd)})
          ]
          spids: [1201]
        )
      spids: [1197 1200]
    )
    (FuncDef
      name: osh-parse-on-byterun
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cmd)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {(osh)}
                          {(--ast-output)}
                          {(-)}
                          {(--no-exec)}
                          {(-c)}
                          {(SQ <"echo \"hello world\"">)}
                        ]
                      )
                    }
                  spids: [1243]
                )
              ]
              spids: [1243]
            )
            (C {(../bin/oil.py)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name cmd>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [1265 1270]
                  )
                )
              }
            )
            (C {(echo)} {(---)})
            (C {(opyg)} {(run)} {(_tmp/osh-opy/bin/oil.pyc)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name cmd>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [1286 1291]
                  )
                )
              }
            )
          ]
          spids: [1240]
        )
      spids: [1236 1239]
    )
    (FuncDef
      name: opy-hello2
      body: (BraceGroup children:[(C {(opyg)} {(run)} {(testdata/hello_py2.py)})] spids:[1301])
      spids: [1297 1300]
    )
    (FuncDef
      name: opy-hello3
      body: (BraceGroup children:[(C {(opyg)} {(run)} {(testdata/hello_py3.py)})] spids:[1317])
      spids: [1313 1316]
    )
    (FuncDef
      name: inspect-pyc
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(misc/inspect_pyc.py)} {(DQ ($ VSub_At "$@"))}]
              more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[1362])]
            )
          ]
          spids: [1359]
        )
      spids: [1355 1358]
    )
    (FuncDef
      name: compare-bytecode
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:left)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [1386]
                )
              ]
              spids: [1384]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:right)
                  op: Equal
                  rhs: {($ VSub_Number "$2")}
                  spids: [1392]
                )
              ]
              spids: [1390]
            )
            (C {(md5sum)} {(DQ ($ VSub_At "$@"))})
            (C {(ls)} {(-l)} {(DQ ($ VSub_At "$@"))})
            (SimpleCommand
              words: [{(inspect-pyc)} {($ VSub_Name "$left")}]
              redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(_tmp/pyc-left.txt)} spids:[1418])]
            )
            (SimpleCommand
              words: [{(inspect-pyc)} {($ VSub_Name "$right")}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(_tmp/pyc-right.txt)}
                  spids: [1427]
                )
              ]
            )
            (AndOr
              children: [
                (C {($ VSub_Name "$DIFF")} 
                  (BracedWordTree
                    parts: [(_tmp/pyc-) (BracedAltPart words:[{(left)}{(right)}]) (.txt)]
                  )
                )
                (C {(true)})
              ]
              op_id: Op_DPipe
            )
            (ControlFlow token:<ControlFlow_Return return>)
            (SimpleCommand
              words: [{(strings)} {($ VSub_Name "$left")}]
              redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(_tmp/str-left.txt)} spids:[1455])]
            )
            (SimpleCommand
              words: [{(strings)} {($ VSub_Name "$right")}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(_tmp/str-right.txt)}
                  spids: [1464]
                )
              ]
            )
            (AndOr
              children: [
                (C {(diff)} {(-u)} 
                  (BracedWordTree
                    parts: [(_tmp/str-) (BracedAltPart words:[{(left)}{(right)}]) (.txt)]
                  )
                )
                (C {(true)})
              ]
              op_id: Op_DPipe
            )
            (C {(echo)} {(KW_Done done)})
          ]
          spids: [1381]
        )
      spids: [1377 1380]
    )
    (FuncDef
      name: determinism-loop
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:func)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [1541]
                )
              ]
              spids: [1539]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(.) (Lit_Slash /) (opy_main.py)}
                          )
                        spids: [1548 1554]
                      )
                    }
                  spids: [1547]
                )
              ]
              spids: [1545]
            )
            (C {(mkdir)} {(-p)} {(_tmp/det)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {($ VSub_Name "$file")})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1569 1573]
                      )
                    }
                  spids: [1568]
                )
              ]
              spids: [1566]
            )
            (ForEach
              iter_name: i
              iter_words: [
                {
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(seq)} {(100)})])
                    left_token: <Left_CommandSub "$(">
                    spids: [1582 1586]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} {(DQ ("--- ") ($ VSub_Name "$i") (" ---"))})
                    (C {($ VSub_Name "$func")} {($ VSub_Name "$file")} 
                      {(_tmp/det/) ($ VSub_Name "$name") (.1)}
                    )
                    (C {($ VSub_Name "$func")} {($ VSub_Name "$file")} 
                      {(_tmp/det/) ($ VSub_Name "$name") (.2)}
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:size1)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(stat)} {(--format)} {(SQ <"%s">)} 
                                        {(_tmp/det/) ($ VSub_Name "$name") (.1)}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [1623 1635]
                              )
                            }
                          spids: [1622]
                        )
                      ]
                      spids: [1620]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:size2)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(stat)} {(--format)} {(SQ <"%s">)} 
                                        {(_tmp/det/) ($ VSub_Name "$name") (.2)}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [1641 1653]
                              )
                            }
                          spids: [1640]
                        )
                      ]
                      spids: [1638]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_Name "$size1")} {(KW_Bang "!") (Lit_Other "=")} 
                                  {($ VSub_Name "$size2")}
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ("mismatched sizes: ") ($ VSub_Name "$size1") (" ") 
                                  ($ VSub_Name "$size2")
                                )
                              }
                            )
                            (C {(compare-bytecode)} 
                              (BracedWordTree
                                parts: [
                                  (_tmp/det/)
                                  ($ VSub_Name "$name")
                                  (.)
                                  (BracedAltPart
                                    words: [{(1)} {(2)}]
                                  )
                                ]
                              )
                            )
                            (C {(echo)} 
                              {(DQ ("Found problem after ") ($ VSub_Name "$i") (" iterations"))}
                            )
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [-1 1668]
                        )
                      ]
                      spids: [-1 1709]
                    )
                  ]
                  spids: [1589 1712]
                )
              spids: [1581 1587]
            )
          ]
          spids: [1536]
        )
      spids: [1532 1535]
    )
    (FuncDef
      name: opy-determinism-loop
      body: 
        (BraceGroup
          children: [(C {(determinism-loop)} {(_compile-one)} {(../core/lexer.py)})]
          spids: [1721]
        )
      spids: [1717 1720]
    )
    (FuncDef
      name: hash-determinism
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:in)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [1745]
                )
              ]
              spids: [1743]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out)
                  op: Equal
                  rhs: {($ VSub_Number "$2")}
                  spids: [1751]
                )
              ]
              spids: [1749]
            )
            (SimpleCommand
              words: [{(misc/determinism.py)} {($ VSub_Name "$in")}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {($ VSub_Name "$out")}
                  spids: [1772]
                )
              ]
            )
          ]
          spids: [1740]
        )
      spids: [1736 1739]
    )
    (FuncDef
      name: hash-determinism-loop
      body: (BraceGroup children:[(C {(determinism-loop)} {(hash-determinism)})] spids:[1783])
      spids: [1779 1782]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(test)} 
                  {
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(basename)} {($ VSub_Number "$0")})])
                      left_token: <Left_CommandSub "$(">
                      spids: [1797 1801]
                    )
                  } {(Lit_Other "=")} {(SQ <smoke.sh>)}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(DQ ($ VSub_At "$@"))})]
          spids: [-1 1810]
        )
      ]
      spids: [-1 1817]
    )
  ]
)