(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:DO_OPTIMIZE) op:Equal rhs:{(0)} spids:[39])]
      spids: [39]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:DO_DARTIUM) op:Equal rhs:{(0)} spids:[42])]
      spids: [42]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:TESTS_FAILED) op:Equal rhs:{(0)} spids:[45])]
      spids: [45]
    )
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (C {(echo)} 
              {(DQ ('usage: ') ($ VSub_Number '$0') (' [ --help ] [ --optimize ] [ --dartium ] '))}
            )
            (C {(echo)})
            (C {(echo)} {(DQ ('Runs a quick set of tests on runtime, client, and compiler dirs'))})
            (C {(echo)})
            (C {(echo)} {(DQ (' --optimize: Also run dartc and client tests in release mode'))})
            (C {(echo)} {(DQ (' --dartium : Also run dartium/debug tests'))})
            (C {(echo)})
          ]
          spids: [53]
        )
      spids: [49 52]
    )
    (FuncDef
      name: doBuild
      body: 
        (BraceGroup
          children: [
            (C {(./tools/build.py)} {(--arch)} {($ VSub_Number '$1')} {(--mode)} {($ VSub_Number '$2')})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(KW_Bang '!') (Lit_Other '=')} {(0)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('Build of ') ($ VSub_Number '$1') (' - ') ($ VSub_Number '$2') (' failed'))
                      }
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 142]
                )
              ]
              spids: [-1 161]
            )
          ]
          spids: [113]
        )
      spids: [109 112]
    )
    (FuncDef
      name: doTest
      body: 
        (BraceGroup
          children: [
            (C {(./tools/test.py)} {(--component)} {($ VSub_Number '$2')} {(--mode)} 
              {($ VSub_Number '$3')}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [199]
                )
              ]
              spids: [199]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name RESULT)} {(KW_Bang '!') (Lit_Other '=')} 
                          {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:TESTS_FAILED)
                          op: Equal
                          rhs: {(1)}
                          spids: [223]
                        )
                      ]
                      spids: [223]
                    )
                  ]
                  spids: [-1 220]
                )
              ]
              spids: [-1 227]
            )
            (ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {(${ VSub_Name RESULT)}
            )
          ]
          spids: [185]
        )
      spids: [181 184]
    )
    (While
      cond: [
        (Sentence
          child: 
            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')})
          terminator: <Op_Semi ';'>
        )
      ]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{(DQ (-h))} {(DQ ('-?'))} {(DQ (-help))} {(DQ (--help))}]
                  action: [(C {(usage)}) (C {(exit)} {(1)})]
                  spids: [270 284 295 -1]
                )
                (case_arm
                  pat_list: [{(DQ (--optimize))}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DO_OPTIMIZE)
                          op: Equal
                          rhs: {(1)}
                          spids: [304]
                        )
                      ]
                      spids: [304]
                    )
                  ]
                  spids: [299 301 308 -1]
                )
                (case_arm
                  pat_list: [{(DQ (--dartium))}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DO_DARTIUM)
                          op: Equal
                          rhs: {(1)}
                          spids: [317]
                        )
                      ]
                      spids: [317]
                    )
                  ]
                  spids: [312 314 321 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(echo)} {(DQ ('Unrecognized argument: ') ($ VSub_Number '$1'))})
                    (C {(usage)})
                    (C {(exit)} {(1)})
                  ]
                  spids: [325 326 345 -1]
                )
              ]
              spids: [262 266 348]
            )
            (C {(shift)})
          ]
          spids: [259 353]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-d)} {(compiler)} {(-o)} {(KW_Bang '!')} {(-d)} 
                  {(runtime)} {(-o)} {(KW_Bang '!')} {(-d)} {(tests)} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ("This doesn't look like the dart source tree."))})
            (C {(echo)} {(DQ ('Change your directory to the dart trunk source'))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 386]
        )
      ]
      spids: [-1 407]
    )
    (C {(echo)})
    (C {(echo)} {(DQ ('--- Building release ---'))})
    (C {(doBuild)} {(ia32)} {(release)})
    (C {(echo)})
    (C {(echo)} {(DQ ('--- Building debug ---'))})
    (C {(doBuild)} {(ia32)} {(debug)})
    (C {(echo)})
    (C {(echo)} {(DQ ('=== Runtime tests === '))})
    (C {(echo)} {(DQ (' Debug (Ctrl-C to skip this set of tests)'))})
    (C {(doTest)} {(runtime)} {(vm)} {(debug)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:RUNTIME_RESULT)
          op: Equal
          rhs: {($ VSub_QMark '$?')}
          spids: [462]
        )
      ]
      spids: [462]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(${ VSub_Name RUNTIME_RESULT)} {(Lit_Other '=') (Lit_Other '=')} 
                  {(0)} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ (' Release (Ctrl-C to skip this set of tests)'))})
            (C {(doTest)} {(runtime)} {(vm)} {(release)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RUNTIME_RESULT)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [502]
                )
              ]
              spids: [502]
            )
          ]
          spids: [-1 482]
        )
      ]
      spids: [-1 505]
    )
    (C {(echo)})
    (C {(echo)} {(DQ ('=== dartc tests ==='))})
    (C {(echo)} {(DQ (' Debug mode (Ctrl-C to skip this set of tests)'))})
    (C {(doTest)} {(compiler)} {(dartc)} {(debug)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DARTC_RESULT)
          op: Equal
          rhs: {($ VSub_QMark '$?')}
          spids: [531]
        )
      ]
      spids: [531]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(${ VSub_Name DO_OPTIMIZE)} {(Lit_Other '=') (Lit_Other '=')} {(1)} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ (' Release mode (--optimize)'))})
            (C {(doTest)} {(compiler)} {(dartc)} {(release)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [571]
                )
              ]
              spids: [571]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name RESULT)} {(KW_Bang '!') (Lit_Other '=')} 
                          {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DARTC_RESULT)
                          op: Equal
                          rhs: {(${ VSub_Name RESULT)}
                          spids: [595]
                        )
                      ]
                      spids: [595]
                    )
                  ]
                  spids: [-1 592]
                )
              ]
              spids: [-1 601]
            )
          ]
          spids: [-1 552]
        )
      ]
      spids: [-1 603]
    )
    (C {(echo)})
    (C {(echo)} {(DQ ('=== Client tests ==='))})
    (C {(echo)} {(DQ (' Chromium  (Ctrl-C to skip this set of tests)'))})
    (C {(doTest)} {(client)} {(chromium)} {(debug)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CLIENT_RESULT)
          op: Equal
          rhs: {($ VSub_QMark '$?')}
          spids: [628]
        )
      ]
      spids: [628]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(${ VSub_Name DO_OPTIMIZE)} {(Lit_Other '=') (Lit_Other '=')} {(1)} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ (' Chromium Release mode (--optimize)'))})
            (C {(doTest)} {(compiler)} {(chromium)} {(release)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [668]
                )
              ]
              spids: [668]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name RESULT)} {(KW_Bang '!') (Lit_Other '=')} 
                          {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CLIENT_RESULT)
                          op: Equal
                          rhs: {(${ VSub_Name RESULT)}
                          spids: [692]
                        )
                      ]
                      spids: [692]
                    )
                  ]
                  spids: [-1 689]
                )
              ]
              spids: [-1 698]
            )
          ]
          spids: [-1 649]
        )
      ]
      spids: [-1 700]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(${ VSub_Name DO_DARTIUM)} {(Lit_Other '=') (Lit_Other '=')} {(1)} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ (' Dartium (Ctrl-C to skip this set of tests)'))})
            (C {(doTest)} {(client)} {(dartium)} {(release)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [739]
                )
              ]
              spids: [739]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name RESULT)} {(KW_Bang '!') (Lit_Other '=')} 
                          {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CLIENT_RESULT)
                          op: Equal
                          rhs: {(${ VSub_Name RESULT)}
                          spids: [763]
                        )
                      ]
                      spids: [763]
                    )
                  ]
                  spids: [-1 760]
                )
              ]
              spids: [-1 769]
            )
          ]
          spids: [-1 720]
        )
      ]
      spids: [-1 771]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(${ VSub_Name RUNTIME_RESULT)} {(KW_Bang '!') (Lit_Other '=')} 
                  {(0)} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(echo)} {(DQ ('*** vm tests failed'))})]
          spids: [-1 794]
        )
      ]
      spids: [-1 803]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(${ VSub_Name DARTC_RESULT)} {(KW_Bang '!') (Lit_Other '=')} {(0)} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(echo)} {(DQ ('*** dartc tests failed'))})]
          spids: [-1 823]
        )
      ]
      spids: [-1 832]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(${ VSub_Name CLIENT_RESULT)} {(KW_Bang '!') (Lit_Other '=')} {(0)} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(echo)} {(DQ ('*** client tests failed'))})]
          spids: [-1 852]
        )
      ]
      spids: [-1 861]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(${ VSub_Name TESTS_FAILED)} {(Lit_Other '=') (Lit_Other '=')} 
                  {(0)} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(echo)} {(DQ ('All presubmit tests passed!'))})]
          spids: [-1 881]
        )
      ]
      spids: [-1 890]
    )
  ]
)