(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DLL)
          op: Equal
          rhs: {(DQ ($ VSub_Number "$1"))}
          spids: [57]
        )
      ]
      spids: [57]
    )
    (C {(shift)} {(1)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:VSTEMP)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(mktemp)} {(-d)})])
                left_token: <Left_CommandSub "$(">
                spids: [74 78]
              )
            }
          spids: [73]
        )
      ]
      spids: [73]
    )
    (C {(trap)} 
      {
        (DQ ("rm -fr ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$VSTEMP") 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">)
        )
      } {(EXIT)}
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(-z)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name BAZEL_VS>
                        suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(set)})
                        spids: [105 109]
                      )
                    )
                  } {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:VSVERSION)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(ls)} {(DQ ("C:/Program Files (x86)"))})
                                    (C {(grep)} {(-E)} {(DQ ("Microsoft Visual Studio [0-9]+"))})
                                    (C {(sort)} {(--version-sort)})
                                    (C {(tail)} {(-n)} {(1)})
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [120 150]
                        )
                      )
                    }
                  spids: [118]
                )
              ]
              spids: [118]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_Name "$VSVERSION"))}
                              right: {(DQ )}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(echo)} {(DQ ("Visual Studio not found"))}) (C {(exit)} {(1)})]
                  spids: [-1 170]
                )
              ]
              spids: [-1 185]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BAZEL_VS)
                  op: Equal
                  rhs: {(DQ ("C:/Program Files (x86)/") ($ VSub_Name "$VSVERSION"))}
                  spids: [188]
                )
              ]
              spids: [188]
            )
          ]
          spids: [-1 115]
        )
      ]
      spids: [-1 194]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:VSVARS)
          op: Equal
          rhs: {(DQ (${ VSub_Name BAZEL_VS) (/VC/VCVARSALL.BAT))}
          spids: [196]
        )
      ]
      spids: [196]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:JAVA)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(ls)} {(DQ ("C:/Program Files/java"))})
                          (C {(grep)} {(-E)} {(DQ ("^jdk"))})
                          (C {(sort)})
                          (C {(tail)} {(-n)} {(1)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [212 240]
              )
            }
          spids: [211]
        )
      ]
      spids: [211]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolBinary op_id:BoolBinary_GlobDEqual left:{(DQ ($ VSub_Name "$JAVA"))} right:{(DQ )})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(echo)} {(DQ ("JDK not found"))}) (C {(exit)} {(1)})]
          spids: [-1 258]
        )
      ]
      spids: [-1 272]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:JAVAINCLUDES)
          op: Equal
          rhs: {(DQ ("C:/Program Files/java/") ($ VSub_Name "$JAVA") (/include))}
          spids: [274]
        )
      ]
      spids: [274]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:WINDOWS_SOURCES)
          op: Equal
          rhs: {(ArrayLiteralPart)}
          spids: [285]
        )
      ]
      spids: [285]
    )
    (ForEach
      iter_name: i
      iter_words: [{($ VSub_Star "$*")}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_Name "$i"))}
                              right: 
                                {(Lit_Other "^") (.) (Lit_Other "*") 
                                  (EscapedLiteralPart
                                    token: <Lit_EscapedChar "\\.">
                                  ) (cc) (Lit_Other "$")
                                }
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:WINDOWS_SOURCES)
                          op: PlusEqual
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (DQ 
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(cygpath)} {(-a)} {(-w)} {($ VSub_Name "$i")})
                                            ]
                                          )
                                        left_token: <Left_CommandSub "$(">
                                        spids: [327 335]
                                      )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [324]
                        )
                      ]
                      spids: [324]
                    )
                  ]
                  spids: [-1 321]
                )
              ]
              spids: [-1 340]
            )
          ]
          spids: [298 342]
        )
      spids: [294 296]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {(DQ (${ VSub_Name VSTEMP) (/windows_jni.bat))}
          spids: [356]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("call ") (Right_DoubleQuote "\"") (${ VSub_Name VSVARS) (Right_DoubleQuote "\"") 
                (" amd64\n") ("set TMP=") 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(cygpath)} {(-a)} {(-w)} {(DQ (${ VSub_Name VSTEMP))})]
                    )
                  left_token: <Left_CommandSub "$(">
                  spids: [376 388]
                ) ("\n") ("CL /EHsc /LD /Fe:") (Right_DoubleQuote "\"") 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(cygpath)} {(-a)} {(-w)} {(${ VSub_Name DLL)})]
                    )
                  left_token: <Left_CommandSub "$(">
                  spids: [392 402]
                ) (Right_DoubleQuote "\"") (" /I ") (Right_DoubleQuote "\"") (${ VSub_Name JAVAINCLUDES) 
                (Right_DoubleQuote "\"") (" /I ") (Right_DoubleQuote "\"") (${ VSub_Name JAVAINCLUDES) (/win32) (Right_DoubleQuote "\"") (" /I . ") 
                (BracedVarSub
                  token: <VSub_Name WINDOWS_SOURCES>
                  bracket_op: (WholeArray op_id:Arith_Star)
                  spids: [418 423]
                ) ("\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [365]
        )
      ]
    )
    (C {(exec)} {(DQ (${ VSub_Name VSTEMP) (/windows_jni.bat))})
  ]
)