(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PROTO_FILES)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<ls>} {<'src/main/protobuf/'> <Id.Lit_Star '*'> <.proto>} 
                    {<'src/main/java/com/google/devtools/build/lib/buildeventstream/proto/'> 
                      <Id.Lit_Star '*'> <.proto>
                    }
                  )
              )
            }
          spids: [48]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LIBRARY_JARS)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.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.'> <Id.Lit_Star '*'> <jar>})
                      (C {<tr>} {(DQ <Id.Lit_BadBackslash '\\'> <n>)} {(DQ <' '>)})
                    ]
                    negated: F
                  )
              )
            }
          spids: [61]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GRPC_JAVA_VERSION)
          op: assign_op.Equal
          rhs: {<0.15.0>}
          spids: [121]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GRPC_LIBRARY_JARS)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<find>} {<'third_party/grpc'>} {<-name>} {(SQ <'*.jar'>)})
                      (C {<grep>} {<-e>} 
                        {<.> <Id.Lit_Star '*'> (${ Id.VSub_Name GRPC_JAVA_VERSION) <.> <Id.Lit_Star '*'> 
                          <jar>
                        }
                      )
                      (C {<tr>} {(DQ <Id.Lit_BadBackslash '\\'> <n>)} {(DQ <' '>)})
                    ]
                    negated: F
                  )
              )
            }
          spids: [124]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LIBRARY_JARS)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name LIBRARY_JARS) <' '> (${ Id.VSub_Name GRPC_LIBRARY_JARS))}
          spids: [165]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DIRS)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<echo>} 
                    (word.BracedTree
                      parts: [
                        <'src/'>
                        (word_part.BracedTuple
                          words: [
                            {<'java_tools/singlejar/java/com/google/devtools/build/zip'>}
                            {<'main/java'>}
                            {<'tools/xcode-common/java/com/google/devtools/build/xcode/'> 
                              (word_part.BracedTuple
                                words: [{<common>} {<util>}]
                              )
                            }
                          ]
                        )
                      ]
                    ) {<'third_party/java/dd_plist/java'>} {(${ Id.VSub_Name OUTPUT_DIR) <'/src'>}
                  )
              )
            }
          spids: [176]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXCLUDE_FILES)
          op: assign_op.Equal
          rhs: {<'src/main/java/com/google/devtools/build/lib/server/GrpcServerImpl.java'>}
          spids: [202]
        )
      ]
    )
    (C {<mkdir>} {<-p>} {(${ Id.VSub_Name OUTPUT_DIR) <'/classes'>})
    (C {<mkdir>} {<-p>} {(${ Id.VSub_Name OUTPUT_DIR) <'/src'>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ZIPOPTS)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$ZIPOPTS'))}
          spids: [228]
        )
      ]
    )
    (C {<unset>} {<JAVA_TOOL_OPTIONS>})
    (C {<unset>} {<_JAVA_OPTIONS>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LDFLAGS)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name LDFLAGS>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{(DQ )})
              )
            }
          spids: [243]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MSYS_DLLS)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [252]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PATHSEP)
          op: assign_op.Equal
          rhs: {(DQ <':'>)}
          spids: [256]
        )
      ]
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name PLATFORM))}
      arms: [
        (case_arm
          pat_list: [{<linux>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:JAVA_HOME)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name JAVA_HOME>
                          suffix_op: 
                            (suffix_op.Unary
                              tok: <Id.VTest_ColonHyphen ':-'>
                              arg_word: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<readlink>} {<-f>} 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: (C {<which>} {<javac>})
                                              )
                                            }
                                          )
                                          (C {<sed>} {(SQ <'s_/bin/javac__'>)})
                                        ]
                                        negated: F
                                      )
                                  )
                                }
                            )
                        )
                      )
                    }
                  spids: [280]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name MACHINE_IS_64BIT))} 
                              {<Id.Lit_Equals '='>} {(SQ <yes>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name MACHINE_IS_Z))} 
                                      {<Id.Lit_Equals '='>} {(SQ <yes>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:PROTOC)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name PROTOC>
                                        suffix_op: 
                                          (suffix_op.Unary
                                            tok: <Id.VTest_ColonHyphen ':-'>
                                            arg_word: 
                                              {<third_party> <Id.Lit_Slash '/'> <protobuf> 
                                                <Id.Lit_Slash '/'> <protoc-linux-s390x_64.exe>
                                              }
                                          )
                                      )
                                    }
                                  spids: [352]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:GRPC_JAVA_PLUGIN)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name GRPC_JAVA_PLUGIN>
                                        suffix_op: 
                                          (suffix_op.Unary
                                            tok: <Id.VTest_ColonHyphen ':-'>
                                            arg_word: 
                                              {<third_party> <Id.Lit_Slash '/'> <grpc> 
                                                <Id.Lit_Slash '/'> <protoc-gen-grpc-java-0.15.0-linux-s390x_64.exe>
                                              }
                                          )
                                      )
                                    }
                                  spids: [364]
                                )
                              ]
                            )
                          ]
                          spids: [330 349]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:PROTOC)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name PROTOC>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VTest_ColonHyphen ':-'>
                                        arg_word: 
                                          {<third_party> <Id.Lit_Slash '/'> <protobuf> 
                                            <Id.Lit_Slash '/'> <protoc-linux-x86_64.exe>
                                          }
                                      )
                                  )
                                }
                              spids: [379]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:GRPC_JAVA_PLUGIN)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name GRPC_JAVA_PLUGIN>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VTest_ColonHyphen ':-'>
                                        arg_word: 
                                          {<third_party> <Id.Lit_Slash '/'> <grpc> <Id.Lit_Slash '/'> 
                                            <protoc-gen-grpc-java-0.15.0-linux-x86_64.exe>
                                          }
                                      )
                                  )
                                }
                              spids: [391]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [308 327]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name MACHINE_IS_ARM))} 
                                  {<Id.Lit_Equals '='>} {(SQ <yes>)} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:PROTOC)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name PROTOC>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VTest_ColonHyphen ':-'>
                                        arg_word: 
                                          {<third_party> <Id.Lit_Slash '/'> <protobuf> 
                                            <Id.Lit_Slash '/'> <protoc-linux-arm32.exe>
                                          }
                                      )
                                  )
                                }
                              spids: [431]
                            )
                          ]
                        )
                      ]
                      spids: [409 428]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PROTOC)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name PROTOC>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_ColonHyphen ':-'>
                                    arg_word: 
                                      {<third_party> <Id.Lit_Slash '/'> <protobuf> <Id.Lit_Slash '/'> 
                                        <protoc-linux-x86_32.exe>
                                      }
                                  )
                              )
                            }
                          spids: [446]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:GRPC_JAVA_PLUGIN)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name GRPC_JAVA_PLUGIN>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_ColonHyphen ':-'>
                                    arg_word: 
                                      {<third_party> <Id.Lit_Slash '/'> <grpc> <Id.Lit_Slash '/'> 
                                        <protoc-gen-grpc-java-0.15.0-linux-x86_32.exe>
                                      }
                                  )
                              )
                            }
                          spids: [458]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [272 273 476 -1]
        )
        (case_arm
          pat_list: [{<freebsd>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:JAVA_HOME)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name JAVA_HOME>
                          suffix_op: 
                            (suffix_op.Unary
                              tok: <Id.VTest_ColonHyphen ':-'>
                              arg_word: 
                                {<Id.Lit_Slash '/'> <usr> <Id.Lit_Slash '/'> <local> <Id.Lit_Slash '/'> 
                                  <openjdk8>
                                }
                            )
                        )
                      )
                    }
                  spids: [487]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PROTOC)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name PROTOC>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_ColonHyphen ':-'>
                            arg_word: 
                              {<third_party> <Id.Lit_Slash '/'> <protobuf> <Id.Lit_Slash '/'> 
                                <protoc-linux-x86_32.exe>
                              }
                          )
                      )
                    }
                  spids: [514]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:GRPC_JAVA_PLUGIN)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name GRPC_JAVA_PLUGIN>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_ColonHyphen ':-'>
                            arg_word: 
                              {<third_party> <Id.Lit_Slash '/'> <grpc> <Id.Lit_Slash '/'> 
                                <protoc-gen-grpc-java-0.15.0-linux-x86_32.exe>
                              }
                          )
                      )
                    }
                  spids: [526]
                )
              ]
            )
          ]
          spids: [479 480 538 -1]
        )
        (case_arm
          pat_list: [{<darwin>}]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {(DQ ($ Id.VSub_DollarName '$JAVA_HOME'))}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:JAVA_HOME)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          words: [
                                            {<'/usr/libexec/java_home'>}
                                            {<-v>}
                                            {(${ Id.VSub_Name JAVA_VERSION) <Id.Lit_Other '+'>}
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '2>'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                    )
                                  )
                                }
                              spids: [561]
                            )
                          ]
                        )
                        (C {<fail>} 
                          {
                            (DQ <'Could not find JAVA_HOME, please ensure a JDK (version '> 
                              (${ Id.VSub_Name JAVA_VERSION) <'+) is installed.'>
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [545 558]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name MACHINE_IS_64BIT))} 
                              {<Id.Lit_Equals '='>} {(SQ <yes>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PROTOC)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name PROTOC>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_ColonHyphen ':-'>
                                    arg_word: 
                                      {<third_party> <Id.Lit_Slash '/'> <protobuf> <Id.Lit_Slash '/'> 
                                        <protoc-osx-x86_64.exe>
                                      }
                                  )
                              )
                            }
                          spids: [619]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:GRPC_JAVA_PLUGIN)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name GRPC_JAVA_PLUGIN>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_ColonHyphen ':-'>
                                    arg_word: 
                                      {<third_party> <Id.Lit_Slash '/'> <grpc> <Id.Lit_Slash '/'> 
                                        <protoc-gen-grpc-java-0.15.0-osx-x86_64.exe>
                                      }
                                  )
                              )
                            }
                          spids: [631]
                        )
                      ]
                    )
                  ]
                  spids: [597 616]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:PROTOC)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name PROTOC>
                            suffix_op: 
                              (suffix_op.Unary
                                tok: <Id.VTest_ColonHyphen ':-'>
                                arg_word: 
                                  {<third_party> <Id.Lit_Slash '/'> <protobuf> <Id.Lit_Slash '/'> 
                                    <protoc-osx-x86_32.exe>
                                  }
                              )
                          )
                        }
                      spids: [646]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [541 542 661 -1]
        )
        (case_arm
          pat_list: [{<msys> <Id.Lit_Star '*'>} {<mingw> <Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PLATFORM)
                  op: assign_op.Equal
                  rhs: {(DQ <mingw>)}
                  spids: [676]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PATHSEP)
                  op: assign_op.Equal
                  rhs: {(DQ <';'>)}
                  spids: [682]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:JAVA_HOME)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name JAVA_HOME>
                          suffix_op: 
                            (suffix_op.Unary
                              tok: <Id.VTest_ColonHyphen ':-'>
                              arg_word: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<ls>} {<-d>} 
                                            {<'/c/Program'> 
                                              (word_part.EscapedLiteral
                                                token: <Id.Lit_EscapedChar '\\ '>
                                              ) <'Files/Java/jdk'> <Id.Lit_Star '*'>
                                            }
                                          )
                                          (C {<sort>})
                                          (C {<tail>} {<-n>} {<1>})
                                        ]
                                        negated: F
                                      )
                                  )
                                }
                            )
                        )
                      )
                    }
                  spids: [692]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name MACHINE_IS_64BIT))} 
                              {<Id.Lit_Equals '='>} {(SQ <yes>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PROTOC)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name PROTOC>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_ColonHyphen ':-'>
                                    arg_word: 
                                      {<third_party> <Id.Lit_Slash '/'> <protobuf> <Id.Lit_Slash '/'> 
                                        <protoc-windows-x86_64.exe>
                                      }
                                  )
                              )
                            }
                          spids: [749]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:GRPC_JAVA_PLUGIN)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name GRPC_JAVA_PLUGIN>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_ColonHyphen ':-'>
                                    arg_word: 
                                      {<third_party> <Id.Lit_Slash '/'> <grpc> <Id.Lit_Slash '/'> 
                                        <protoc-gen-grpc-java-0.15.0-windows-x86_64.exe>
                                      }
                                  )
                              )
                            }
                          spids: [761]
                        )
                      ]
                    )
                  ]
                  spids: [727 746]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:PROTOC)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name PROTOC>
                            suffix_op: 
                              (suffix_op.Unary
                                tok: <Id.VTest_ColonHyphen ':-'>
                                arg_word: 
                                  {<third_party> <Id.Lit_Slash '/'> <protobuf> <Id.Lit_Slash '/'> 
                                    <protoc-windows-x86_32.exe>
                                  }
                              )
                          )
                        }
                      spids: [776]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:GRPC_JAVA_PLUGIN)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name GRPC_JAVA_PLUGIN>
                            suffix_op: 
                              (suffix_op.Unary
                                tok: <Id.VTest_ColonHyphen ':-'>
                                arg_word: 
                                  {<third_party> <Id.Lit_Slash '/'> <grpc> <Id.Lit_Slash '/'> 
                                    <protoc-gen-grpc-java-0.15.0-windows-x86_32.exe>
                                  }
                              )
                          )
                        }
                      spids: [788]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [664 669 -1 802]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Unary
              op_id: Id.BoolUnary_x
              child: 
                {
                  (DQ 
                    (braced_var_sub
                      token: <Id.VSub_Name PROTOC>
                      suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:(word.Empty))
                    )
                  )
                }
            )
        )
        (C {<fail>} 
          {
            (DQ <'Protobuf compiler not found in '> 
              (braced_var_sub
                token: <Id.VSub_Name PROTOC>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:(word.Empty))
              )
            )
          }
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Unary
              op_id: Id.BoolUnary_x
              child: 
                {
                  (DQ 
                    (braced_var_sub
                      token: <Id.VSub_Name GRPC_JAVA_PLUGIN>
                      suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:(word.Empty))
                    )
                  )
                }
            )
        )
        (C {<fail>} 
          {
            (DQ <'gRPC Java plugin not found in '> 
              (braced_var_sub
                token: <Id.VSub_Name GRPC_JAVA_PLUGIN>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:(word.Empty))
              )
            )
          }
        )
      ]
    )
    (C {<get_java_version>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} 
          {
            (braced_var_sub
              token: <Id.VSub_Name JAVA_VERSION>
              suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<Id.Lit_Other '*'> <.>})
            )
          } {<-le>} 
          {
            (braced_var_sub
              token: <Id.VSub_Name JAVAC_VERSION>
              suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<Id.Lit_Other '*'> <.>})
            )
          } {<Id.Lit_RBracket ']'>}
        )
        (C {<fail>} 
          {
            (DQ <'JDK version ('> (${ Id.VSub_Name JAVAC_VERSION) <') is lower than '> 
              (${ Id.VSub_Name JAVA_VERSION) <', please set '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <JAVA_HOME.>
            )
          }
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:JAR)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name JAVA_HOME) <'/bin/jar'>)}
          spids: [907]
        )
      ]
    )
    (command.ShFunction
      name: java_compilation
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'name='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'directories='> ($ Id.VSub_Number '$2')})
            (C {<local>} {<Id.Lit_VarLike 'excludes='> ($ Id.VSub_Number '$3')})
            (C {<local>} {<Id.Lit_VarLike 'library_jars='> ($ Id.VSub_Number '$4')})
            (C {<local>} {<Id.Lit_VarLike 'output='> ($ Id.VSub_Number '$5')})
            (C {<local>} 
              {<Id.Lit_VarLike 'classpath='> 
                (braced_var_sub
                  token: <Id.VSub_Name library_jars>
                  suffix_op: 
                    (suffix_op.PatSub
                      pat: {<' '>}
                      replace: {($ Id.VSub_DollarName '$PATHSEP')}
                      replace_mode: Id.Lit_Slash
                    )
                ) <Id.Lit_Colon ':'> ($ Id.VSub_Number '$5')
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'sourcepath='> 
                (braced_var_sub
                  token: <Id.VSub_Name directories>
                  suffix_op: 
                    (suffix_op.PatSub
                      pat: {<' '>}
                      replace: {($ Id.VSub_DollarName '$PATHSEP')}
                      replace_mode: Id.Lit_Slash
                    )
                )
              }
            )
            (C {<tempdir>})
            (C {<local>} {<Id.Lit_VarLike 'tmp='> (DQ (${ Id.VSub_Name NEW_TMPDIR))})
            (C {<local>} {<Id.Lit_VarLike 'paramfile='> (DQ (${ Id.VSub_Name tmp) <'/param'>)})
            (C {<local>} {<Id.Lit_VarLike 'filelist='> (DQ (${ Id.VSub_Name tmp) <'/filelist'>)})
            (C {<local>} {<Id.Lit_VarLike 'excludefile='> (DQ (${ Id.VSub_Name tmp) <'/excludefile'>)})
            (C {<touch>} {($ Id.VSub_DollarName '$paramfile')})
            (C {<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name output) <'/classes'>)})
            (C {<log>} {(DQ <'Compiling '> ($ Id.VSub_DollarName '$name') <' code...'>)})
            (command.Pipeline
              children: [
                (C {<find>} {(${ Id.VSub_Name directories)} {<-name>} {(DQ <'*.java'>)})
                (command.Simple
                  words: [{<sort>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName '$filelist'))}
                    )
                  ]
                  do_fork: T
                )
              ]
              negated: F
            )
            (command.Pipeline
              children: [
                (command.Subshell
                  child: 
                    (command.ForEach
                      iter_name: i
                      iter_words: [{($ Id.VSub_DollarName '$excludes')}]
                      do_arg_iter: F
                      body: (command.DoGroup children:[(C {<echo>} {($ Id.VSub_DollarName '$i')})])
                    )
                )
                (command.Simple
                  words: [{<sort>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName '$excludefile'))}
                    )
                  ]
                  do_fork: T
                )
              ]
              negated: F
            )
            (command.Simple
              words: [
                {<comm>}
                {<-23>}
                {(DQ ($ Id.VSub_DollarName '$filelist'))}
                {(DQ ($ Id.VSub_DollarName '$excludefile'))}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$paramfile'))}
                )
              ]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} 
                              {(DQ ($ Id.VSub_DollarName '$BAZEL_DEBUG_JAVA_COMPILATION'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'directories='> (${ Id.VSub_Name directories))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'classpath='> (${ Id.VSub_Name classpath))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'sourcepath='> (${ Id.VSub_Name sourcepath))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'libraries='> (${ Id.VSub_Name library_jars))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'output='> (${ Id.VSub_Name output) <'/classes'>)}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'List of compiled files:'>)}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<cat>} {(DQ ($ Id.VSub_DollarName '$paramfile'))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                  ]
                  spids: [1150 1165]
                )
              ]
            )
            (C {<run>} {(DQ (${ Id.VSub_Name JAVAC))} {<-classpath>} {(DQ (${ Id.VSub_Name classpath))} 
              {<-sourcepath>} {(DQ (${ Id.VSub_Name sourcepath))} {<-d>} {(DQ (${ Id.VSub_Name output) <'/classes'>)} {<-source>} 
              {(DQ ($ Id.VSub_DollarName '$JAVA_VERSION'))} {<-target>} {(DQ ($ Id.VSub_DollarName '$JAVA_VERSION'))} {<-encoding>} {<UTF-8>} 
              {(DQ <'@'> (${ Id.VSub_Name paramfile))}
            )
            (C {<log>} {(DQ <'Extracting helper classes for '> ($ Id.VSub_DollarName '$name') <...>)})
            (command.ForEach
              iter_name: f
              iter_words: [{(${ Id.VSub_Name library_jars)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<run>} {<unzip>} {<-qn>} {(${ Id.VSub_Name f)} {<-d>} 
                      {(DQ (${ Id.VSub_Name output) <'/classes'>)}
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: create_deploy_jar
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'name='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'mainClass='> ($ Id.VSub_Number '$2')})
            (C {<local>} {<Id.Lit_VarLike 'output='> ($ Id.VSub_Number '$3')})
            (C {<shift>} {<3>})
            (C {<local>} {<Id.Lit_VarLike 'packages='> (DQ )})
            (command.ForEach
              iter_name: i
              iter_words: [{($ Id.VSub_DollarName '$output') <'/classes/'> <Id.Lit_Star '*'>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'package='> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<basename>} {($ Id.VSub_DollarName '$i')})
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobNEqual
                                          left: {(DQ ($ Id.VSub_DollarName '$package'))}
                                          right: {(DQ <META-INF>)}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:packages)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$packages') <' -C '> 
                                        ($ Id.VSub_DollarName '$output') <'/classes '> ($ Id.VSub_DollarName '$package')
                                      )
                                    }
                                  spids: [1455]
                                )
                              ]
                            )
                          ]
                          spids: [1435 1452]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<log>} {(DQ <'Creating '> ($ Id.VSub_DollarName '$name') <.jar...>)})
            (command.Simple
              words: [{<echo>} {(DQ <'Main-Class: '> ($ Id.VSub_DollarName '$mainClass'))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$output') <'/MANIFEST.MF'>}
                )
              ]
              do_fork: T
            )
            (C {<run>} {(DQ ($ Id.VSub_DollarName '$JAR'))} {<cmf>} 
              {($ Id.VSub_DollarName '$output') <'/MANIFEST.MF'>} {($ Id.VSub_DollarName '$output') <'/'> ($ Id.VSub_DollarName '$name') <.jar>} 
              {($ Id.VSub_DollarName '$packages')} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                      {(DQ (${ Id.VSub_Name BAZEL_SKIP_JAVA_COMPILATION))} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<log>} {(DQ <'Compiling Java stubs for protocol buffers...'>)})
            (command.ForEach
              iter_name: f
              iter_words: [{($ Id.VSub_DollarName '$PROTO_FILES')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<run>} {(DQ (${ Id.VSub_Name PROTOC))} {<'-Isrc/main/protobuf/'>} 
                      {<'-Isrc/main/java/com/google/devtools/build/lib/buildeventstream/proto/'>} {<--java_out> <Id.Lit_Equals '='> (${ Id.VSub_Name OUTPUT_DIR) <'/src'>} 
                      {<--plugin> <Id.Lit_Equals '='> <protoc-gen-grpc> <Id.Lit_Equals '='> 
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name GRPC_JAVA_PLUGIN>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:(word.Empty))
                          )
                        )
                      } {<--grpc_out> <Id.Lit_Equals '='> (${ Id.VSub_Name OUTPUT_DIR) <'/src'>} 
                      {(DQ ($ Id.VSub_DollarName '$f'))}
                    )
                  ]
                )
            )
            (C {<java_compilation>} {(DQ <'Bazel Java'>)} {(DQ ($ Id.VSub_DollarName '$DIRS'))} 
              {(DQ ($ Id.VSub_DollarName '$EXCLUDE_FILES'))} {(DQ ($ Id.VSub_DollarName '$LIBRARY_JARS'))} {(DQ (${ Id.VSub_Name OUTPUT_DIR))}
            )
            (command.ForEach
              iter_name: i
              iter_words: [
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (C {<find>} {<'src/main/java'>} {<-type>} {<f>} {<-a>} 
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\!'>)} {<-name>} {(SQ <'*.java'>)} {<-a>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\!'>)} {<-name>} 
                            {(SQ <BUILD>)}
                          )
                          (C {<sed>} {(SQ <'s|src/main/java/||'>)})
                        ]
                        negated: F
                      )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<mkdir>} {<-p>} 
                      {
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<dirname>} 
                              {(${ Id.VSub_Name OUTPUT_DIR) <'/classes/'> ($ Id.VSub_DollarName '$i')}
                            )
                        )
                      }
                    )
                    (C {<cp>} {<'src/main/java/'> ($ Id.VSub_DollarName '$i')} 
                      {(${ Id.VSub_Name OUTPUT_DIR) <'/classes/'> ($ Id.VSub_DollarName '$i')}
                    )
                  ]
                )
            )
            (C {<chmod>} {<u> <Id.Lit_Other '+'> <w>} 
              {
                (DQ (${ Id.VSub_Name OUTPUT_DIR) 
                  <'/classes/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE'>
                )
              }
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 1760
                      stdin_parts: [
                        <'local_repository(name = \'bazel_tools\', path = __workspace_dir__)\n'>
                        <'bind(name = '>
                        <Id.Right_DoubleQuote '"'>
                        <cc_toolchain>
                        <Id.Right_DoubleQuote '"'>
                        <', actual = '>
                        <Id.Right_DoubleQuote '"'>
                        <'@bazel_tools//tools/cpp:default-toolchain'>
                        <Id.Right_DoubleQuote '"'>
                        <')\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: 
                    {(${ Id.VSub_Name OUTPUT_DIR) 
                      <'/classes/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE'>
                    }
                )
              ]
              do_fork: T
            )
            (C {<create_deploy_jar>} {(DQ <libblaze>)} 
              {(DQ <com.google.devtools.build.lib.bazel.BazelMain>)} {(${ Id.VSub_Name OUTPUT_DIR)}
            )
          ]
          spids: [1519 1534]
        )
      ]
    )
    (C {<log>} {(DQ <'Creating Bazel install base...'>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ARCHIVE_DIR)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name OUTPUT_DIR) <'/archive'>}
          spids: [1788]
        )
      ]
    )
    (C {<mkdir>} {<-p>} {(${ Id.VSub_Name ARCHIVE_DIR) <'/_embedded_binaries'>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_span_id: 1826
              stdin_parts: [<'#!/bin/sh\n'> <'mkdir -p $2\n'> <'cp $1 $2/MANIFEST\n'>]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: 
            {(${ Id.VSub_Name ARCHIVE_DIR) <'/_embedded_binaries/build-runfiles'> 
              (${ Id.VSub_Name EXE_EXT)
            }
        )
      ]
      do_fork: T
    )
    (C {<chmod>} {<0755>} 
      {(${ Id.VSub_Name ARCHIVE_DIR) <'/_embedded_binaries/build-runfiles'> (${ Id.VSub_Name EXE_EXT)}
    )
    (C {<log>} {(DQ <'Creating process-wrapper...'>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_span_id: 1893
              stdin_parts: [
                <'#!/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'>
              ]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: 
            {(${ Id.VSub_Name ARCHIVE_DIR) <'/_embedded_binaries/process-wrapper'> 
              (${ Id.VSub_Name EXE_EXT)
            }
        )
      ]
      do_fork: T
    )
    (C {<chmod>} {<0755>} 
      {(${ Id.VSub_Name ARCHIVE_DIR) <'/_embedded_binaries/process-wrapper'> (${ Id.VSub_Name EXE_EXT)}
    )
    (C {<cp>} {<'src/main/tools/build_interface_so'>} 
      {(${ Id.VSub_Name ARCHIVE_DIR) <'/_embedded_binaries/build_interface_so'>}
    )
    (C {<cp>} {<'src/main/tools/jdk.BUILD'>} 
      {(${ Id.VSub_Name ARCHIVE_DIR) <'/_embedded_binaries/jdk.BUILD'>}
    )
    (C {<cp>} {($ Id.VSub_DollarName '$OUTPUT_DIR') <'/libblaze.jar'>} {(${ Id.VSub_Name ARCHIVE_DIR)})
    (C {<log>} {(DQ <'Compiling xcode-locator...'>)})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobDEqual
                          left: {($ Id.VSub_DollarName '$PLATFORM')}
                          right: {(DQ <darwin>)}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<run>} {<'/usr/bin/xcrun'>} {<clang>} {<-fobjc-arc>} {<-framework>} {<CoreServices>} 
              {<-framework>} {<Foundation>} {<-o>} {(${ Id.VSub_Name ARCHIVE_DIR) <'/_embedded_binaries/xcode-locator'>} 
              {<'tools/osx/xcode_locator.m'>}
            )
          ]
          spids: [1944 1959]
        )
      ]
      else_action: [
        (C {<cp>} {<'tools/osx/xcode_locator_stub.sh'>} 
          {(${ Id.VSub_Name ARCHIVE_DIR) <'/_embedded_binaries/xcode-locator'>}
        )
      ]
    )
    (command.ShFunction
      name: run_bazel_jar
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'command='> ($ Id.VSub_Number '$1')})
            (C {<shift>})
            (C {(DQ (${ Id.VSub_Name JAVA_HOME) <'/bin/java'>)} 
              {<-XX> <Id.Lit_Colon ':'> <Id.Lit_Other '+'> <HeapDumpOnOutOfMemoryError>} {<-Xverify> <Id.Lit_Colon ':'> <none>} {<-Dfile.encoding> <Id.Lit_Equals '='> <ISO-8859-1>} 
              {<-XX> <Id.Lit_Colon ':'> <Id.Lit_VarLike 'HeapDumpPath='> (${ Id.VSub_Name OUTPUT_DIR)} 
              {<-Djava.util.logging.config.file> <Id.Lit_Equals '='> (${ Id.VSub_Name OUTPUT_DIR) 
                <'/javalog.properties'>
              } {<-Dio.bazel.EnableJni> <Id.Lit_Equals '='> <0>} {<-jar>} 
              {(${ Id.VSub_Name ARCHIVE_DIR) <'/libblaze.jar'>} {<--batch>} {<--install_base> <Id.Lit_Equals '='> (${ Id.VSub_Name ARCHIVE_DIR)} 
              {<--output_base> <Id.Lit_Equals '='> (${ Id.VSub_Name OUTPUT_DIR) <'/out'>} {<--install_md5> <Id.Lit_Equals '='>} 
              {<--workspace_directory> <Id.Lit_Equals '='> (${ Id.VSub_Name PWD)} {<--nofatal_event_bus_exceptions>} {(${ Id.VSub_Name BAZEL_DIR_STARTUP_OPTIONS)} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name BAZEL_BOOTSTRAP_STARTUP_OPTIONS>
                  suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{})
                )
              } {($ Id.VSub_DollarName '$command')} {<--ignore_unsupported_sandboxing>} 
              {<--startup_time> <Id.Lit_Equals '='> <329>} {<--extract_data_time> <Id.Lit_Equals '='> <523>} {<--rc_source> <Id.Lit_Equals '='> <'/dev/null'>} 
              {<--isatty> <Id.Lit_Equals '='> <1>} {<--ignore_client_env>} {<--client_cwd> <Id.Lit_Equals '='> (${ Id.VSub_Name PWD)} 
              {(DQ (${ Id.VSub_At '@'))}
            )
          ]
        )
    )
  ]
)