(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PROTO_FILES)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(ls)} {(src/main/protobuf/) (Lit_Other "*") (.proto)} 
                        {(src/main/java/com/google/devtools/build/lib/buildeventstream/proto/) 
                          (Lit_Other "*") (.proto)
                        }
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [49 59]
              )
            }
          spids: [48]
        )
      ]
      spids: [48]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LIBRARY_JARS)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(find)} {(third_party)} {(-name)} {(SQ <"*.jar">)})
                          (C {(grep)} {(-Fv)} {(/javac.jar)})
                          (C {(grep)} {(-Fv)} {(/javac7.jar)})
                          (C {(grep)} {(-Fv)} {(JavaBuilder)})
                          (C {(grep)} {(-ve)} {(third_party/grpc/grpc.) (Lit_Other "*") (jar)})
                          (C {(tr)} {(DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} 
                            {(DQ (" "))}
                          )
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [62 118]
              )
            }
          spids: [61]
        )
      ]
      spids: [61]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:GRPC_JAVA_VERSION) op:Equal rhs:{(0.15.0)} spids:[120])]
      spids: [120]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GRPC_LIBRARY_JARS)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(find)} {(third_party/grpc)} {(-name)} {(SQ <"*.jar">)})
                          (C {(grep)} {(-e)} 
                            {(.) (Lit_Other "*") (${ VSub_Name GRPC_JAVA_VERSION) (.) (Lit_Other "*") 
                              (jar)
                            }
                          )
                          (C {(tr)} {(DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} 
                            {(DQ (" "))}
                          )
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [124 161]
              )
            }
          spids: [123]
        )
      ]
      spids: [123]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LIBRARY_JARS)
          op: Equal
          rhs: {(DQ (${ VSub_Name LIBRARY_JARS) (" ") (${ VSub_Name GRPC_LIBRARY_JARS))}
          spids: [163]
        )
      ]
      spids: [163]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DIRS)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(echo)} 
                        (BracedWordTree
                          parts: [
                            (src/)
                            (BracedAltPart
                              words: [
                                {(java_tools/singlejar/java/com/google/devtools/build/zip)}
                                {(main/java)}
                                {(tools/xcode-common/java/com/google/devtools/build/xcode/) 
                                  (BracedAltPart
                                    words: [{(common)} {(util)}]
                                  )
                                }
                              ]
                            )
                          ]
                        ) {(third_party/java/dd_plist/java)} {(${ VSub_Name OUTPUT_DIR) (/src)}
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [175 198]
              )
            }
          spids: [174]
        )
      ]
      spids: [174]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:EXCLUDE_FILES)
          op: Equal
          rhs: {(src/main/java/com/google/devtools/build/lib/server/GrpcServerImpl.java)}
          spids: [200]
        )
      ]
      spids: [200]
    )
    (C {(mkdir)} {(-p)} {(${ VSub_Name OUTPUT_DIR) (/classes)})
    (C {(mkdir)} {(-p)} {(${ VSub_Name OUTPUT_DIR) (/src)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ZIPOPTS)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$ZIPOPTS"))}
          spids: [226]
        )
      ]
      spids: [226]
    )
    (C {(unset)} {(JAVA_TOOL_OPTIONS)})
    (C {(unset)} {(_JAVA_OPTIONS)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LDFLAGS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name LDFLAGS>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [242 247]
              )
            }
          spids: [241]
        )
      ]
      spids: [241]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:MSYS_DLLS) op:Equal rhs:{(DQ )} spids:[250])]
      spids: [250]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:PATHSEP) op:Equal rhs:{(DQ (":"))} spids:[254])]
      spids: [254]
    )
    (Case
      to_match: {(DQ (${ VSub_Name PLATFORM))}
      arms: [
        (case_arm
          pat_list: [{(linux)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:JAVA_HOME)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name JAVA_HOME>
                          suffix_op: 
                            (StringUnary
                              op_id: VTest_ColonHyphen
                              arg_word: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(readlink)} {(-f)} 
                                                {
                                                  (CommandSubPart
                                                    command_list: 
                                                      (CommandList
                                                        children: [(C {(which)} {(javac)})]
                                                      )
                                                    left_token: <Left_CommandSub "$(">
                                                    spids: [288 292]
                                                  )
                                                }
                                              )
                                              (C {(sed)} {(SQ <s_/bin/javac__>)})
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [283 301]
                                  )
                                }
                            )
                          spids: [280 302]
                        )
                      )
                    }
                  spids: [278]
                )
              ]
              spids: [278]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(DQ (${ VSub_Name MACHINE_IS_64BIT))} {(Lit_Other "=")} 
                          {(SQ <yes>)} {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other "[")} {(DQ (${ VSub_Name MACHINE_IS_Z))} 
                                  {(Lit_Other "=")} {(SQ <yes>)} {(Lit_Other "]")}
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:PROTOC)
                                  op: Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name PROTOC>
                                        suffix_op: 
                                          (StringUnary
                                            op_id: VTest_ColonHyphen
                                            arg_word: 
                                              {(third_party) (Lit_Slash /) (protobuf) (Lit_Slash /) 
                                                (protoc-linux-s390x_64.exe)
                                              }
                                          )
                                        spids: [351 359]
                                      )
                                    }
                                  spids: [350]
                                )
                              ]
                              spids: [350]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:GRPC_JAVA_PLUGIN)
                                  op: Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name GRPC_JAVA_PLUGIN>
                                        suffix_op: 
                                          (StringUnary
                                            op_id: VTest_ColonHyphen
                                            arg_word: 
                                              {(third_party) (Lit_Slash /) (grpc) (Lit_Slash /) 
                                                (protoc-gen-grpc-java-0.15.0-linux-s390x_64.exe)
                                              }
                                          )
                                        spids: [363 371]
                                      )
                                    }
                                  spids: [362]
                                )
                              ]
                              spids: [362]
                            )
                          ]
                          spids: [-1 347]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:PROTOC)
                              op: Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name PROTOC>
                                    suffix_op: 
                                      (StringUnary
                                        op_id: VTest_ColonHyphen
                                        arg_word: 
                                          {(third_party) (Lit_Slash /) (protobuf) (Lit_Slash /) 
                                            (protoc-linux-x86_64.exe)
                                          }
                                      )
                                    spids: [378 386]
                                  )
                                }
                              spids: [377]
                            )
                          ]
                          spids: [377]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:GRPC_JAVA_PLUGIN)
                              op: Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name GRPC_JAVA_PLUGIN>
                                    suffix_op: 
                                      (StringUnary
                                        op_id: VTest_ColonHyphen
                                        arg_word: 
                                          {(third_party) (Lit_Slash /) (grpc) (Lit_Slash /) 
                                            (protoc-gen-grpc-java-0.15.0-linux-x86_64.exe)
                                          }
                                      )
                                    spids: [390 398]
                                  )
                                }
                              spids: [389]
                            )
                          ]
                          spids: [389]
                        )
                      ]
                      spids: [374 401]
                    )
                  ]
                  spids: [-1 325]
                )
              ]
              else_action: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other "[")} {(DQ (${ VSub_Name MACHINE_IS_ARM))} {(Lit_Other "=")} 
                              {(SQ <yes>)} {(Lit_Other "]")}
                            )
                          terminator: <Op_Semi ";">
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:PROTOC)
                              op: Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name PROTOC>
                                    suffix_op: 
                                      (StringUnary
                                        op_id: VTest_ColonHyphen
                                        arg_word: 
                                          {(third_party) (Lit_Slash /) (protobuf) (Lit_Slash /) 
                                            (protoc-linux-arm32.exe)
                                          }
                                      )
                                    spids: [430 438]
                                  )
                                }
                              spids: [429]
                            )
                          ]
                          spids: [429]
                        )
                      ]
                      spids: [-1 426]
                    )
                  ]
                  else_action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:PROTOC)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name PROTOC>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VTest_ColonHyphen
                                    arg_word: 
                                      {(third_party) (Lit_Slash /) (protobuf) (Lit_Slash /) 
                                        (protoc-linux-x86_32.exe)
                                      }
                                  )
                                spids: [445 453]
                              )
                            }
                          spids: [444]
                        )
                      ]
                      spids: [444]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:GRPC_JAVA_PLUGIN)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name GRPC_JAVA_PLUGIN>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VTest_ColonHyphen
                                    arg_word: 
                                      {(third_party) (Lit_Slash /) (grpc) (Lit_Slash /) 
                                        (protoc-gen-grpc-java-0.15.0-linux-x86_32.exe)
                                      }
                                  )
                                spids: [457 465]
                              )
                            }
                          spids: [456]
                        )
                      ]
                      spids: [456]
                    )
                  ]
                  spids: [441 468]
                )
              ]
              spids: [404 471]
            )
          ]
          spids: [270 271 474 -1]
        )
        (case_arm
          pat_list: [{(freebsd)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:JAVA_HOME)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name JAVA_HOME>
                          suffix_op: 
                            (StringUnary
                              op_id: VTest_ColonHyphen
                              arg_word: 
                                {(Lit_Slash /) (usr) (Lit_Slash /) (local) (Lit_Slash /) (openjdk8)}
                            )
                          spids: [487 496]
                        )
                      )
                    }
                  spids: [485]
                )
              ]
              spids: [485]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PROTOC)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name PROTOC>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: 
                              {(third_party) (Lit_Slash /) (protobuf) (Lit_Slash /) 
                                (protoc-linux-x86_32.exe)
                              }
                          )
                        spids: [513 521]
                      )
                    }
                  spids: [512]
                )
              ]
              spids: [512]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GRPC_JAVA_PLUGIN)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name GRPC_JAVA_PLUGIN>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: 
                              {(third_party) (Lit_Slash /) (grpc) (Lit_Slash /) 
                                (protoc-gen-grpc-java-0.15.0-linux-x86_32.exe)
                              }
                          )
                        spids: [525 533]
                      )
                    }
                  spids: [524]
                )
              ]
              spids: [524]
            )
          ]
          spids: [477 478 536 -1]
        )
        (case_arm
          pat_list: [{(darwin)}]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name "$JAVA_HOME"))})
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:JAVA_HOME)
                              op: Equal
                              rhs: 
                                {
                                  (DQ 
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (SimpleCommand
                                              words: [
                                                {(/usr/libexec/java_home)}
                                                {(-v)}
                                                {(${ VSub_Name JAVA_VERSION) (Lit_Other "+")}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op_id: Redir_Great
                                                  fd: 2
                                                  arg_word: {(/dev/null)}
                                                  spids: [571]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub "$(">
                                      spids: [561 574]
                                    )
                                  )
                                }
                              spids: [559]
                            )
                          ]
                          spids: [559]
                        )
                        (C {(fail)} 
                          {
                            (DQ ("Could not find JAVA_HOME, please ensure a JDK (version ") 
                              (${ VSub_Name JAVA_VERSION) ("+) is installed.")
                            )
                          }
                        )
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 556]
                )
              ]
              spids: [-1 592]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(DQ (${ VSub_Name MACHINE_IS_64BIT))} {(Lit_Other "=")} 
                          {(SQ <yes>)} {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:PROTOC)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name PROTOC>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VTest_ColonHyphen
                                    arg_word: 
                                      {(third_party) (Lit_Slash /) (protobuf) (Lit_Slash /) 
                                        (protoc-osx-x86_64.exe)
                                      }
                                  )
                                spids: [618 626]
                              )
                            }
                          spids: [617]
                        )
                      ]
                      spids: [617]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:GRPC_JAVA_PLUGIN)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name GRPC_JAVA_PLUGIN>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VTest_ColonHyphen
                                    arg_word: 
                                      {(third_party) (Lit_Slash /) (grpc) (Lit_Slash /) 
                                        (protoc-gen-grpc-java-0.15.0-osx-x86_64.exe)
                                      }
                                  )
                                spids: [630 638]
                              )
                            }
                          spids: [629]
                        )
                      ]
                      spids: [629]
                    )
                  ]
                  spids: [-1 614]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:PROTOC)
                      op: Equal
                      rhs: 
                        {
                          (BracedVarSub
                            token: <VSub_Name PROTOC>
                            suffix_op: 
                              (StringUnary
                                op_id: VTest_ColonHyphen
                                arg_word: 
                                  {(third_party) (Lit_Slash /) (protobuf) (Lit_Slash /) 
                                    (protoc-osx-x86_32.exe)
                                  }
                              )
                            spids: [645 653]
                          )
                        }
                      spids: [644]
                    )
                  ]
                  spids: [644]
                )
              ]
              spids: [641 656]
            )
          ]
          spids: [539 540 659 -1]
        )
        (case_arm
          pat_list: [{(msys) (Lit_Other "*")} {(mingw) (Lit_Other "*")}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PLATFORM)
                  op: Equal
                  rhs: {(DQ (mingw))}
                  spids: [674]
                )
              ]
              spids: [674]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:PATHSEP) op:Equal rhs:{(DQ (";"))} spids:[680])]
              spids: [680]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:JAVA_HOME)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name JAVA_HOME>
                          suffix_op: 
                            (StringUnary
                              op_id: VTest_ColonHyphen
                              arg_word: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(ls)} {(-d)} 
                                                {(/c/Program) 
                                                  (EscapedLiteralPart
                                                    token: <Lit_EscapedChar "\\ ">
                                                  ) (Files/Java/jdk) (Lit_Other "*")
                                                }
                                              )
                                              (C {(sort)})
                                              (C {(tail)} {(-n)} {(1)})
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [695 716]
                                  )
                                }
                            )
                          spids: [692 717]
                        )
                      )
                    }
                  spids: [690]
                )
              ]
              spids: [690]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(DQ (${ VSub_Name MACHINE_IS_64BIT))} {(Lit_Other "=")} 
                          {(SQ <yes>)} {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:PROTOC)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name PROTOC>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VTest_ColonHyphen
                                    arg_word: 
                                      {(third_party) (Lit_Slash /) (protobuf) (Lit_Slash /) 
                                        (protoc-windows-x86_64.exe)
                                      }
                                  )
                                spids: [748 756]
                              )
                            }
                          spids: [747]
                        )
                      ]
                      spids: [747]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:GRPC_JAVA_PLUGIN)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name GRPC_JAVA_PLUGIN>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VTest_ColonHyphen
                                    arg_word: 
                                      {(third_party) (Lit_Slash /) (grpc) (Lit_Slash /) 
                                        (protoc-gen-grpc-java-0.15.0-windows-x86_64.exe)
                                      }
                                  )
                                spids: [760 768]
                              )
                            }
                          spids: [759]
                        )
                      ]
                      spids: [759]
                    )
                  ]
                  spids: [-1 744]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:PROTOC)
                      op: Equal
                      rhs: 
                        {
                          (BracedVarSub
                            token: <VSub_Name PROTOC>
                            suffix_op: 
                              (StringUnary
                                op_id: VTest_ColonHyphen
                                arg_word: 
                                  {(third_party) (Lit_Slash /) (protobuf) (Lit_Slash /) 
                                    (protoc-windows-x86_32.exe)
                                  }
                              )
                            spids: [775 783]
                          )
                        }
                      spids: [774]
                    )
                  ]
                  spids: [774]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:GRPC_JAVA_PLUGIN)
                      op: Equal
                      rhs: 
                        {
                          (BracedVarSub
                            token: <VSub_Name GRPC_JAVA_PLUGIN>
                            suffix_op: 
                              (StringUnary
                                op_id: VTest_ColonHyphen
                                arg_word: 
                                  {(third_party) (Lit_Slash /) (grpc) (Lit_Slash /) 
                                    (protoc-gen-grpc-java-0.15.0-windows-x86_32.exe)
                                  }
                              )
                            spids: [787 795]
                          )
                        }
                      spids: [786]
                    )
                  ]
                  spids: [786]
                )
              ]
              spids: [771 798]
            )
          ]
          spids: [662 667 -1 800]
        )
      ]
      spids: [260 268 800]
    )
    (AndOr
      children: [
        (DBracket
          expr: 
            (BoolUnary
              op_id: BoolUnary_x
              child: 
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name PROTOC>
                      suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                      spids: [808 811]
                    )
                  )
                }
            )
        )
        (C {(fail)} 
          {
            (DQ ("Protobuf compiler not found in ") 
              (BracedVarSub
                token: <VSub_Name PROTOC>
                suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                spids: [824 827]
              )
            )
          }
        )
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (DBracket
          expr: 
            (BoolUnary
              op_id: BoolUnary_x
              child: 
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name GRPC_JAVA_PLUGIN>
                      suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                      spids: [836 839]
                    )
                  )
                }
            )
        )
        (C {(fail)} 
          {
            (DQ ("gRPC Java plugin not found in ") 
              (BracedVarSub
                token: <VSub_Name GRPC_JAVA_PLUGIN>
                suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                spids: [852 855]
              )
            )
          }
        )
      ]
      op_id: Op_DPipe
    )
    (C {(get_java_version)})
    (AndOr
      children: [
        (C {(Lit_Other "[")} 
          {
            (BracedVarSub
              token: <VSub_Name JAVA_VERSION>
              suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*.")})
              spids: [866 870]
            )
          } {(-le)} 
          {
            (BracedVarSub
              token: <VSub_Name JAVAC_VERSION>
              suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*.")})
              spids: [874 878]
            )
          } {(Lit_Other "]")}
        )
        (C {(fail)} 
          {
            (DQ ("JDK version (") (${ VSub_Name JAVAC_VERSION) (") is lower than ") 
              (${ VSub_Name JAVA_VERSION) (", please set ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) (JAVA_HOME.)
            )
          }
        )
      ]
      op_id: Op_DPipe
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:JAR)
          op: Equal
          rhs: {(DQ (${ VSub_Name JAVA_HOME) (/bin/jar))}
          spids: [903]
        )
      ]
      spids: [903]
    )
    (FuncDef
      name: java_compilation
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [926]
                )
              ]
              spids: [924]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:directories)
                  op: Equal
                  rhs: {($ VSub_Number "$2")}
                  spids: [932]
                )
              ]
              spids: [930]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:excludes)
                  op: Equal
                  rhs: {($ VSub_Number "$3")}
                  spids: [938]
                )
              ]
              spids: [936]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:library_jars)
                  op: Equal
                  rhs: {($ VSub_Number "$4")}
                  spids: [944]
                )
              ]
              spids: [942]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:output)
                  op: Equal
                  rhs: {($ VSub_Number "$5")}
                  spids: [950]
                )
              ]
              spids: [948]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:classpath)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name library_jars>
                        suffix_op: 
                          (PatSub
                            pat: {(" ")}
                            replace: {($ VSub_Name "$PATHSEP")}
                            do_all: True
                            do_prefix: False
                            do_suffix: False
                          )
                        spids: [958 965]
                      ) (Lit_Other ":") ($ VSub_Number "$5")
                    }
                  spids: [957]
                )
              ]
              spids: [955]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:sourcepath)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name directories>
                        suffix_op: 
                          (PatSub
                            pat: {(" ")}
                            replace: {($ VSub_Name "$PATHSEP")}
                            do_all: True
                            do_prefix: False
                            do_suffix: False
                          )
                        spids: [973 980]
                      )
                    }
                  spids: [972]
                )
              ]
              spids: [970]
            )
            (C {(tempdir)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tmp)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name NEW_TMPDIR))}
                  spids: [989]
                )
              ]
              spids: [987]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:paramfile)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name tmp) (/param))}
                  spids: [999]
                )
              ]
              spids: [997]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:filelist)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name tmp) (/filelist))}
                  spids: [1010]
                )
              ]
              spids: [1008]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:excludefile)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name tmp) (/excludefile))}
                  spids: [1021]
                )
              ]
              spids: [1019]
            )
            (C {(touch)} {($ VSub_Name "$paramfile")})
            (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name output) (/classes))})
            (C {(log)} {(DQ ("Compiling ") ($ VSub_Name "$name") (" code..."))})
            (Pipeline
              children: [
                (C {(find)} {(${ VSub_Name directories)} {(-name)} {(DQ ("*.java"))})
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: -1
                      arg_word: {(DQ ($ VSub_Name "$filelist"))}
                      spids: [1078]
                    )
                  ]
                )
              ]
              negated: False
            )
            (Pipeline
              children: [
                (Subshell
                  child: 
                    (ForEach
                      iter_name: i
                      iter_words: [{($ VSub_Name "$excludes")}]
                      do_arg_iter: False
                      body: (DoGroup children:[(C {(echo)} {($ VSub_Name "$i")})] spids:[11031111])
                      spids: [1099 1101]
                    )
                  spids: [1093 1112]
                )
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: -1
                      arg_word: {(DQ ($ VSub_Name "$excludefile"))}
                      spids: [1118]
                    )
                  ]
                )
              ]
              negated: False
            )
            (SimpleCommand
              words: [
                {(comm)}
                {(-23)}
                {(DQ ($ VSub_Name "$filelist"))}
                {(DQ ($ VSub_Name "$excludefile"))}
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$paramfile"))}
                  spids: [1138]
                )
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(KW_Bang "!")} {(-z)} 
                          {(DQ ($ VSub_Name "$BAZEL_DEBUG_JAVA_COMPILATION"))} {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ ("directories=") (${ VSub_Name directories))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1173])]
                    )
                    (SimpleCommand
                      words: [{(echo)} {(DQ ("classpath=") (${ VSub_Name classpath))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1186])]
                    )
                    (SimpleCommand
                      words: [{(echo)} {(DQ ("sourcepath=") (${ VSub_Name sourcepath))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1199])]
                    )
                    (SimpleCommand
                      words: [{(echo)} {(DQ ("libraries=") (${ VSub_Name library_jars))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1212])]
                    )
                    (SimpleCommand
                      words: [{(echo)} {(DQ ("output=") (${ VSub_Name output) (/classes))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1226])]
                    )
                    (SimpleCommand
                      words: [{(echo)} {(DQ ("List of compiled files:"))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1236])]
                    )
                    (SimpleCommand
                      words: [{(cat)} {(DQ ($ VSub_Name "$paramfile"))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1246])]
                    )
                  ]
                  spids: [-1 1161]
                )
              ]
              spids: [-1 1250]
            )
            (C {(run)} {(DQ (${ VSub_Name JAVAC))} {(-classpath)} {(DQ (${ VSub_Name classpath))} 
              {(-sourcepath)} {(DQ (${ VSub_Name sourcepath))} {(-d)} {(DQ (${ VSub_Name output) (/classes))} {(-source)} 
              {(DQ ($ VSub_Name "$JAVA_VERSION"))} {(-target)} {(DQ ($ VSub_Name "$JAVA_VERSION"))} {(-encoding)} {(UTF-8)} 
              {(DQ ("@") (${ VSub_Name paramfile))}
            )
            (C {(log)} {(DQ ("Extracting helper classes for ") ($ VSub_Name "$name") (...))})
            (ForEach
              iter_name: f
              iter_words: [{(${ VSub_Name library_jars)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(run)} {(unzip)} {(-qn)} {(${ VSub_Name f)} {(-d)} 
                      {(DQ (${ VSub_Name output) (/classes))}
                    )
                  ]
                  spids: [1337 1360]
                )
              spids: [1330 1335]
            )
          ]
          spids: [921]
        )
      spids: [915 920]
    )
    (FuncDef
      name: create_deploy_jar
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [1379]
                )
              ]
              spids: [1377]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:mainClass)
                  op: Equal
                  rhs: {($ VSub_Number "$2")}
                  spids: [1385]
                )
              ]
              spids: [1383]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:output)
                  op: Equal
                  rhs: {($ VSub_Number "$3")}
                  spids: [1391]
                )
              ]
              spids: [1389]
            )
            (C {(shift)} {(3)})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:packages) op:Equal rhs:{(DQ )} spids:[1402])]
              spids: [1400]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name "$output") (/classes/) (Lit_Other "*")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:package)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(basename)} {($ VSub_Name "$i")})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [1424 1428]
                              )
                            }
                          spids: [1423]
                        )
                      ]
                      spids: [1421]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobNEqual
                                      left: {(DQ ($ VSub_Name "$package"))}
                                      right: {(DQ (META-INF))}
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:packages)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_Name "$packages") (" -C ") ($ VSub_Name "$output") 
                                        ("/classes ") ($ VSub_Name "$package")
                                      )
                                    }
                                  spids: [1451]
                                )
                              ]
                              spids: [1451]
                            )
                          ]
                          spids: [-1 1448]
                        )
                      ]
                      spids: [-1 1461]
                    )
                  ]
                  spids: [1418 1464]
                )
              spids: [1412 1416]
            )
            (C {(log)} {(DQ ("Creating ") ($ VSub_Name "$name") (.jar...))})
            (SimpleCommand
              words: [{(echo)} {(DQ ("Main-Class: ") ($ VSub_Name "$mainClass"))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {($ VSub_Name "$output") (/MANIFEST.MF)}
                  spids: [1484]
                )
              ]
            )
            (C {(run)} {(DQ ($ VSub_Name "$JAR"))} {(cmf)} {($ VSub_Name "$output") (/MANIFEST.MF)} 
              {($ VSub_Name "$output") (/) ($ VSub_Name "$name") (.jar)} {($ VSub_Name "$packages")} {(DQ ($ VSub_At "$@"))}
            )
          ]
          spids: [1374]
        )
      spids: [1368 1373]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(-z)} {(DQ (${ VSub_Name BAZEL_SKIP_JAVA_COMPILATION))} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(log)} {(DQ ("Compiling Java stubs for protocol buffers..."))})
            (ForEach
              iter_name: f
              iter_words: [{($ VSub_Name "$PROTO_FILES")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(run)} {(DQ (${ VSub_Name PROTOC))} {(-Isrc/main/protobuf/)} 
                      {(-Isrc/main/java/com/google/devtools/build/lib/buildeventstream/proto/)} {(--java_out) (Lit_Other "=") (${ VSub_Name OUTPUT_DIR) (/src)} 
                      {(--plugin) (Lit_Other "=") (protoc-gen-grpc) (Lit_Other "=") 
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name GRPC_JAVA_PLUGIN>
                            suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                            spids: [1583 1586]
                          )
                        )
                      } {(--grpc_out) (Lit_Other "=") (${ VSub_Name OUTPUT_DIR) (/src)} {(DQ ($ VSub_Name "$f"))}
                    )
                  ]
                  spids: [1550 1603]
                )
              spids: [1545 1548]
            )
            (C {(java_compilation)} {(DQ ("Bazel Java"))} {(DQ ($ VSub_Name "$DIRS"))} 
              {(DQ ($ VSub_Name "$EXCLUDE_FILES"))} {(DQ ($ VSub_Name "$LIBRARY_JARS"))} {(DQ (${ VSub_Name OUTPUT_DIR))}
            )
            (ForEach
              iter_name: i
              iter_words: [
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (Pipeline
                            children: [
                              (C {(find)} {(src/main/java)} {(-type)} {(f)} {(-a)} 
                                {(EscapedLiteralPart token:<Lit_EscapedChar "\\!">)} {(-name)} {(SQ <"*.java">)} {(-a)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\!">)} {(-name)} 
                                {(SQ <BUILD>)}
                              )
                              (C {(sed)} {(SQ <"s|src/main/java/||">)})
                            ]
                            negated: False
                          )
                        ]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [1643 1679]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(mkdir)} {(-p)} 
                      {
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (C {(dirname)} 
                                  {(${ VSub_Name OUTPUT_DIR) (/classes/) ($ VSub_Name "$i")}
                                )
                              ]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [1689 1697]
                        )
                      }
                    )
                    (C {(cp)} {(src/main/java/) ($ VSub_Name "$i")} 
                      {(${ VSub_Name OUTPUT_DIR) (/classes/) ($ VSub_Name "$i")}
                    )
                  ]
                  spids: [1682 1712]
                )
              spids: [1642 1680]
            )
            (C {(chmod)} {(u) (Lit_Other "+") (w)} 
              {
                (DQ (${ VSub_Name OUTPUT_DIR) 
                  (/classes/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE)
                )
              }
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("local_repository(name = 'bazel_tools', path = __workspace_dir__)\n") 
                        ("bind(name = ") (Right_DoubleQuote "\"") (cc_toolchain) (Right_DoubleQuote "\"") (", actual = ") (Right_DoubleQuote "\"") 
                        ("@bazel_tools//tools/cpp:default-toolchain") (Right_DoubleQuote "\"") (")\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [1736]
                )
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: 
                    {(${ VSub_Name OUTPUT_DIR) 
                      (/classes/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE)
                    }
                  spids: [1739]
                )
              ]
            )
            (C {(create_deploy_jar)} {(DQ (libblaze))} 
              {(DQ (com.google.devtools.build.lib.bazel.BazelMain))} {(${ VSub_Name OUTPUT_DIR)}
            )
          ]
          spids: [-1 1530]
        )
      ]
      spids: [-1 1773]
    )
    (C {(log)} {(DQ ("Creating Bazel install base..."))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ARCHIVE_DIR)
          op: Equal
          rhs: {(${ VSub_Name OUTPUT_DIR) (/archive)}
          spids: [1782]
        )
      ]
      spids: [1782]
    )
    (C {(mkdir)} {(-p)} {(${ VSub_Name ARCHIVE_DIR) (/_embedded_binaries)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {("#!/bin/sh\n") ("mkdir -p $2\n") ("cp $1 $2/MANIFEST\n")}
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [1803]
        )
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: 
            {(${ VSub_Name ARCHIVE_DIR) (/_embedded_binaries/build-runfiles) (${ VSub_Name EXE_EXT)}
          spids: [1808]
        )
      ]
    )
    (C {(chmod)} {(0755)} 
      {(${ VSub_Name ARCHIVE_DIR) (/_embedded_binaries/build-runfiles) (${ VSub_Name EXE_EXT)}
    )
    (C {(log)} {(DQ ("Creating process-wrapper..."))})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {("#!/bin/sh\n") ("# Dummy process wrapper, does not support timeout\n") ("shift 2\n") 
              ("stdout=\"$1\"\n") ("stderr=\"$2\"\n") ("shift 2\n") ("\n") ("if [ \"$stdout\" = \"-\" ]\n") ("then\n") 
              ("  if [ \"$stderr\" = \"-\" ]\n") ("  then\n") ("    \"$@\"\n") ("    exit $?\n") ("  else\n") ("    \"$@\" 2>\"$stderr\"\n") 
              ("    exit $?\n") ("  fi\n") ("else\n") ("  if [ \"$stderr\" = \"-\" ]\n") ("  then\n") ("    \"$@\" >\"$stdout\"\n") 
              ("    exit $?\n") ("  else\n") ("    \"$@\" 2>\"$stderr\" >\"$stdout\"\n") ("    exit $?\n") ("  fi\n") ("fi\n") ("\n") 
              ("\n") ("\"$@\"\n") ("exit $?\n")
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [1838]
        )
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: 
            {(${ VSub_Name ARCHIVE_DIR) (/_embedded_binaries/process-wrapper) (${ VSub_Name EXE_EXT)}
          spids: [1843]
        )
      ]
    )
    (C {(chmod)} {(0755)} 
      {(${ VSub_Name ARCHIVE_DIR) (/_embedded_binaries/process-wrapper) (${ VSub_Name EXE_EXT)}
    )
    (C {(cp)} {(src/main/tools/build_interface_so)} 
      {(${ VSub_Name ARCHIVE_DIR) (/_embedded_binaries/build_interface_so)}
    )
    (C {(cp)} {(src/main/tools/jdk.BUILD)} {(${ VSub_Name ARCHIVE_DIR) (/_embedded_binaries/jdk.BUILD)})
    (C {(cp)} {($ VSub_Name "$OUTPUT_DIR") (/libblaze.jar)} {(${ VSub_Name ARCHIVE_DIR)})
    (C {(log)} {(DQ ("Compiling xcode-locator..."))})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {($ VSub_Name "$PLATFORM")}
                      right: {(DQ (darwin))}
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(run)} {(/usr/bin/xcrun)} {(clang)} {(-fobjc-arc)} {(-framework)} {(CoreServices)} 
              {(-framework)} {(Foundation)} {(-o)} {(${ VSub_Name ARCHIVE_DIR) (/_embedded_binaries/xcode-locator)} 
              {(tools/osx/xcode_locator.m)}
            )
          ]
          spids: [-1 1917]
        )
      ]
      else_action: [
        (C {(cp)} {(tools/osx/xcode_locator_stub.sh)} 
          {(${ VSub_Name ARCHIVE_DIR) (/_embedded_binaries/xcode-locator)}
        )
      ]
      spids: [1945 1957]
    )
    (FuncDef
      name: run_bazel_jar
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:command)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [1971]
                )
              ]
              spids: [1969]
            )
            (C {(shift)})
            (C {(DQ (${ VSub_Name JAVA_HOME) (/bin/java))} 
              {(-XX) (Lit_Other ":") (Lit_Other "+") (HeapDumpOnOutOfMemoryError)} {(-Xverify) (Lit_Other ":") (none)} {(-Dfile.encoding) (Lit_Other "=") (ISO-8859-1)} 
              {(-XX) (Lit_Other ":") (Lit_VarLike "HeapDumpPath=") (${ VSub_Name OUTPUT_DIR)} {(-Djava.util.logging.config.file) (Lit_Other "=") (${ VSub_Name OUTPUT_DIR) (/javalog.properties)} 
              {(-Dio.bazel.EnableJni) (Lit_Other "=") (0)} {(-jar)} {(${ VSub_Name ARCHIVE_DIR) (/libblaze.jar)} {(--batch)} 
              {(--install_base) (Lit_Other "=") (${ VSub_Name ARCHIVE_DIR)} {(--output_base) (Lit_Other "=") (${ VSub_Name OUTPUT_DIR) (/out)} {(--install_md5) (Lit_Other "=")} 
              {(--workspace_directory) (Lit_Other "=") (${ VSub_Name PWD)} {(--nofatal_event_bus_exceptions)} {(${ VSub_Name BAZEL_DIR_STARTUP_OPTIONS)} 
              {
                (BracedVarSub
                  token: <VSub_Name BAZEL_BOOTSTRAP_STARTUP_OPTIONS>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{})
                  spids: [2079 2082]
                )
              } {($ VSub_Name "$command")} {(--ignore_unsupported_sandboxing)} {(--startup_time) (Lit_Other "=") (329)} 
              {(--extract_data_time) (Lit_Other "=") (523)} {(--rc_source) (Lit_Other "=") (/dev/null)} {(--isatty) (Lit_Other "=") (1)} {(--ignore_client_env)} 
              {(--client_cwd) (Lit_Other "=") (${ VSub_Name PWD)} {(DQ (${ VSub_At "@"))}
            )
          ]
          spids: [1966]
        )
      spids: [1960 1965]
    )
  ]
)