(CommandList
  children: [
    (C {(Lit_Other ":")} 
      {
        (BracedVarSub
          token: <VSub_Name BAZELRC>
          suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(DQ (/dev/null))})
          spids: [62 68]
        )
      }
    )
    (C {(Lit_Other ":")} 
      {
        (BracedVarSub
          token: <VSub_Name EMBED_LABEL>
          suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(DQ )})
          spids: [72 77]
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:EMBED_LABEL_ARG)
          op: Equal
          rhs: {(ArrayLiteralPart)}
          spids: [80]
        )
      ]
      spids: [80]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-n)} {(DQ (${ VSub_Name EMBED_LABEL))} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:EMBED_LABEL_ARG)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [{(--stamp)} {(--embed_label)} {(DQ (${ VSub_Name EMBED_LABEL))}]
                      )
                    }
                  spids: [102]
                )
              ]
              spids: [102]
            )
          ]
          spids: [-1 99]
        )
      ]
      spids: [-1 115]
    )
    (C {(Lit_Other ":")} 
      {
        (BracedVarSub
          token: <VSub_Name JAVA_VERSION>
          suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(DQ (1.8))})
          spids: [120 126]
        )
      }
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(DQ (${ VSub_Name JAVA_VERSION))} {(Lit_Other "=")} {(DQ (1.7))} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(Lit_Other ":")} 
              {
                (BracedVarSub
                  token: <VSub_Name BAZEL_ARGS>
                  suffix_op: 
                    (StringUnary
                      op_id: VTest_ColonEquals
                      arg_word: 
                        {("--java_toolchain=") (Lit_Slash /) (Lit_Slash /) (src) (Lit_Slash /) 
                          (java_tools) (Lit_Slash /) ("buildjar:bootstrap_toolchain_jdk7 ") ("        --host_java_toolchain=") (Lit_Slash /) 
                          (Lit_Slash /) (src) (Lit_Slash /) (java_tools) (Lit_Slash /) ("buildjar:bootstrap_toolchain_jdk7 ") 
                          ("        --define JAVA_VERSION=1.7 --ignore_unsupported_sandboxing ") ("        --compilation_mode=opt ") ("        ") 
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name EXTRA_BAZEL_ARGS>
                              suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                              spids: [180 183]
                            )
                          )
                        }
                    )
                  spids: [153 185]
                )
              }
            )
          ]
          spids: [-1 148]
        )
      ]
      else_action: [
        (C {(Lit_Other ":")} 
          {
            (BracedVarSub
              token: <VSub_Name BAZEL_ARGS>
              suffix_op: 
                (StringUnary
                  op_id: VTest_ColonEquals
                  arg_word: 
                    {("--java_toolchain=") (Lit_Slash /) (Lit_Slash /) (src) (Lit_Slash /) (java_tools) 
                      (Lit_Slash /) ("buildjar:bootstrap_toolchain ") ("        --host_java_toolchain=") (Lit_Slash /) (Lit_Slash /) (src) 
                      (Lit_Slash /) (java_tools) (Lit_Slash /) ("buildjar:bootstrap_toolchain ") 
                      (
"        --strategy=Javac=worker --worker_quit_after_build --ignore_unsupported_sandboxing "
                      ) ("        --compilation_mode=opt ") ("        ") 
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name EXTRA_BAZEL_ARGS>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [219 222]
                        )
                      )
                    }
                )
              spids: [192 224]
            )
          }
        )
      ]
      spids: [187 226]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(-z)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name BAZEL>
                        suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                        spids: [236 239]
                      )
                    )
                  } {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (FuncDef
              name: run_bootstrapping_bazel
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:command)
                          op: Equal
                          rhs: {($ VSub_Number "$1")}
                          spids: [259]
                        )
                      ]
                      spids: [257]
                    )
                    (C {(shift)})
                    (C {(run_bazel_jar)} {($ VSub_Name "$command")} 
                      {
                        (BracedVarSub
                          token: <VSub_Name BAZEL_ARGS>
                          suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{})
                          spids: [272 275]
                        )
                      } {(--verbose_failures)} 
                      {(--javacopt) (Lit_Other "=") 
                        (DQ ("-g -source ") (${ VSub_Name JAVA_VERSION) (" -target ") 
                          (${ VSub_Name JAVA_VERSION)
                        )
                      } {(DQ (${ VSub_At "@"))}
                    )
                  ]
                  spids: [254]
                )
              spids: [248 253]
            )
          ]
          spids: [-1 245]
        )
      ]
      else_action: [
        (FuncDef
          name: run_bootstrapping_bazel
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:command)
                      op: Equal
                      rhs: {($ VSub_Number "$1")}
                      spids: [317]
                    )
                  ]
                  spids: [315]
                )
                (C {(shift)})
                (C {(${ VSub_Name BAZEL)} {(--bazelrc) (Lit_Other "=") (${ VSub_Name BAZELRC)} 
                  {(${ VSub_Name BAZEL_DIR_STARTUP_OPTIONS)} {($ VSub_Name "$command")} 
                  {
                    (BracedVarSub
                      token: <VSub_Name BAZEL_ARGS>
                      suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{})
                      spids: [342 345]
                    )
                  } {(--verbose_failures)} 
                  {(--javacopt) (Lit_Other "=") 
                    (DQ ("-g -source ") (${ VSub_Name JAVA_VERSION) (" -target ") 
                      (${ VSub_Name JAVA_VERSION)
                    )
                  } {(DQ (${ VSub_At "@"))}
                )
              ]
              spids: [312]
            )
          spids: [306 311]
        )
      ]
      spids: [303 373]
    )
    (FuncDef
      name: bazel_build
      body: 
        (BraceGroup
          children: [
            (C {(run_bootstrapping_bazel)} {(build)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name EMBED_LABEL_ARG>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [390 395]
                  )
                )
              } {(DQ ($ VSub_At "$@"))}
            )
          ]
          spids: [382]
        )
      spids: [376 381]
    )
    (FuncDef
      name: get_bazel_bin_path
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(run_bootstrapping_bazel)} {(info)} {(DQ (bazel-bin))})
                (C {(echo)} {(DQ (bazel-bin))})
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [411]
        )
      spids: [405 410]
    )
    (FuncDef
      name: md5_outputs
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(Lit_Other "[")} {(-n)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name BAZEL_TEST_XTRACE>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                        spids: [447 450]
                      )
                    )
                  } {(Lit_Other "]")}
                )
                (C {(set)} {(Lit_Other "+") (x)})
              ]
              op_id: Op_DAmp
            )
            (ForEach
              iter_name: i
              iter_words: [
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(find)} {(bazel-bin/)} {(-type)} {(f)} {(-a)} 
                            {(EscapedLiteralPart token:<Lit_EscapedChar "\\!">)} {(-name)} {(MANIFEST)} {(-a)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\!">)} {(-name)} 
                            {(SQ <"*.runfiles_manifest">)} {(-a)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\!">)} {(-name)} {(SQ <"*.a">)}
                          )
                        ]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [480 516]
                  )
                }
              ]
              do_arg_iter: False
              body: (DoGroup children:[(C {(md5_file)} {($ VSub_Name "$i")})] spids:[519527])
              spids: [479 517]
            )
            (ForEach
              iter_name: i
              iter_words: [
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [(C {(find)} {(bazel-genfiles/)} {(-type)} {(f)})]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [536 544]
                  )
                }
              ]
              do_arg_iter: False
              body: (DoGroup children:[(C {(md5_file)} {($ VSub_Name "$i")})] spids:[547555])
              spids: [535 545]
            )
            (AndOr
              children: [
                (C {(Lit_Other "[")} {(-n)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name BAZEL_TEST_XTRACE>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                        spids: [563 566]
                      )
                    )
                  } {(Lit_Other "]")}
                )
                (C {(set)} {(-x)})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [439]
        )
      spids: [433 438]
    )
    (FuncDef
      name: get_outputs_sum
      body: 
        (BraceGroup
          children: [(Pipeline children:[(C {(md5_outputs)})(C {(sort)} {(-k)} {(2)})] negated:False)]
          spids: [586]
        )
      spids: [580 585]
    )
    (FuncDef
      name: bootstrap_test
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BAZEL_BIN)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [613]
                )
              ]
              spids: [611]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BAZEL_SUM)
                  op: Equal
                  rhs: {($ VSub_Number "$2")}
                  spids: [619]
                )
              ]
              spids: [617]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BAZEL_TARGET)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 3>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{("src:bazel")})
                        spids: [626 630]
                      )
                    }
                  spids: [625]
                )
              ]
              spids: [623]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:STRATEGY)
                  op: Equal
                  rhs: {(DQ ("--strategy=Javac=worker --worker_quit_after_build"))}
                  spids: [635]
                )
              ]
              spids: [633]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(DQ (${ VSub_Name JAVA_VERSION))} {(Lit_Other "=")} 
                          {(DQ (1.7))} {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:STRATEGY)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [663]
                        )
                      ]
                      spids: [663]
                    )
                  ]
                  spids: [-1 660]
                )
              ]
              spids: [-1 666]
            )
            (AndOr
              children: [
                (C {(Lit_Other "[")} {(-x)} {(DQ (${ VSub_Name BAZEL_BIN))} {(Lit_Other "]")})
                (C {(fail)} {(DQ ("syntax: bootstrap bazel-binary"))})
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (C {(run)} {(${ VSub_Name BAZEL_BIN)} {(--nomaster_bazelrc)} 
                  {(--bazelrc) (Lit_Other "=") (${ VSub_Name BAZELRC)} {(${ VSub_Name BAZEL_DIR_STARTUP_OPTIONS)} {(clean)} {(--expunge)}
                )
                (ControlFlow
                  token: <ControlFlow_Return return>
                  arg_word: {($ VSub_QMark "$?")}
                )
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (C {(run)} {(${ VSub_Name BAZEL_BIN)} {(--nomaster_bazelrc)} 
                  {(--bazelrc) (Lit_Other "=") (${ VSub_Name BAZELRC)} {(${ VSub_Name BAZEL_DIR_STARTUP_OPTIONS)} {(build)} 
                  {
                    (BracedVarSub
                      token: <VSub_Name EXTRA_BAZEL_ARGS>
                      suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{})
                      spids: [751 754]
                    )
                  } {(${ VSub_Name STRATEGY)} {(--fetch)} {(--nostamp)} {(--define)} 
                  {(DQ ("JAVA_VERSION=") (${ VSub_Name JAVA_VERSION))} 
                  {(--javacopt) (Lit_Other "=") 
                    (DQ ("-g -source ") (${ VSub_Name JAVA_VERSION) (" -target ") 
                      (${ VSub_Name JAVA_VERSION)
                    )
                  } {(${ VSub_Name BAZEL_TARGET)}
                )
                (ControlFlow
                  token: <ControlFlow_Return return>
                  arg_word: {($ VSub_QMark "$?")}
                )
              ]
              op_id: Op_DPipe
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(-n)} {(DQ (${ VSub_Name BAZEL_SUM))} {(Lit_Other "]")})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(cat)} {(bazel-genfiles/src/java.version)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(${ VSub_Name BAZEL_SUM)}
                          spids: [827]
                        )
                      ]
                    )
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(get_outputs_sum)}]
                          redirects: [
                            (Redir
                              op_id: Redir_DGreat
                              fd: -1
                              arg_word: {(${ VSub_Name BAZEL_SUM)}
                              spids: [835]
                            )
                          ]
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {($ VSub_QMark "$?")}
                        )
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 820]
                )
              ]
              spids: [-1 848]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(-z)} 
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name BOOTSTRAP>
                                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                spids: [858 861]
                              )
                            )
                          } {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(tempdir)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:BOOTSTRAP)
                          op: Equal
                          rhs: {(${ VSub_Name NEW_TMPDIR) (/bazel)}
                          spids: [873]
                        )
                      ]
                      spids: [873]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:FILE)
                          op: Equal
                          rhs: 
                            {(bazel-bin/) 
                              (BracedVarSub
                                token: <VSub_Name BAZEL_TARGET>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VOp1_DPound
                                    arg_word: {(Lit_Slash /) (Lit_Slash /)}
                                  )
                                spids: [884 889]
                              )
                            }
                          spids: [882]
                        )
                      ]
                      spids: [880]
                    )
                    (C {(cp)} {(-f)} 
                      {
                        (BracedVarSub
                          token: <VSub_Name FILE>
                          suffix_op: 
                            (PatSub
                              pat: {(":")}
                              replace: {(EscapedLiteralPart token:<Lit_EscapedChar "\\/">)}
                              do_all: False
                              do_prefix: False
                              do_suffix: False
                            )
                          spids: [896 902]
                        )
                      } {($ VSub_Name "$BOOTSTRAP")}
                    )
                    (C {(chmod)} {(Lit_Other "+") (x)} {($ VSub_Name "$BOOTSTRAP")})
                  ]
                  spids: [-1 867]
                )
              ]
              spids: [-1 915]
            )
          ]
          spids: [608]
        )
      spids: [602 607]
    )
  ]
)