(CommandList
  children: [
    (C {(set)} {(-ex)})
    (C {(cd)} 
      {
        (CommandSubPart
          command_list: (CommandList children:[(C {(dirname)} {($ VSub_Number "$0")})])
          left_token: <Left_CommandSub "$(">
          spids: [14 18]
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TEST_VERSION)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(grep)} {(DQ ("^  <version>.*</version>"))} {(pom.xml)})
                          (C {(sed)} 
                            {
                              (DQ ("s|  <version>") (EscapedLiteralPart token:<Lit_EscapedChar "\\(">) 
                                (".*") (EscapedLiteralPart token:<Lit_EscapedChar "\\)">) ("</version>|") 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar "\\1">
                                ) ("|")
                              )
                            }
                          )
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_Backtick "`">
                spids: [28 50]
              )
            }
          spids: [27]
        )
      ]
      spids: [27]
    )
    (Case
      to_match: {(DQ ($ VSub_Number "$1"))}
      arms: [
        (case_arm
          pat_list: [{(DQ )} {(2.5.0)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:OLD_VERSION) op:Equal rhs:{(2.5.0)} spids:[84])]
              spids: [84]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLD_VERSION_PROTOC)
                  op: Equal
                  rhs: 
                    {(https) (Lit_Other ":") 
                      (
//github.com/xfxyjwf/protobuf-compiler-release/raw/master/v2.5.0/linux/protoc
                      )
                    }
                  spids: [88]
                )
              ]
              spids: [88]
            )
          ]
          spids: [-1 81 94 -1]
        )
        (case_arm
          pat_list: [{(2.6.1)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:OLD_VERSION) op:Equal rhs:{(2.6.1)} spids:[101])]
              spids: [101]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLD_VERSION_PROTOC)
                  op: Equal
                  rhs: 
                    {(http) (Lit_Other ":") 
                      (
//repo1.maven.org/maven2/com/google/protobuf/protoc/2.6.1-build2/protoc-2.6.1-build2-linux-x86_64.exe
                      )
                    }
                  spids: [105]
                )
              ]
              spids: [105]
            )
          ]
          spids: [97 98 111 -1]
        )
        (case_arm
          pat_list: [{(3.0.0-beta-1)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLD_VERSION)
                  op: Equal
                  rhs: {(3.0.0-beta-1)}
                  spids: [118]
                )
              ]
              spids: [118]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLD_VERSION_PROTOC)
                  op: Equal
                  rhs: 
                    {(http) (Lit_Other ":") 
                      (
//repo1.maven.org/maven2/com/google/protobuf/protoc/3.0.0-beta-1/protoc-3.0.0-beta-1-linux-x86_64.exe
                      )
                    }
                  spids: [122]
                )
              ]
              spids: [122]
            )
          ]
          spids: [114 115 128 -1]
        )
        (case_arm
          pat_list: [{(3.0.0-beta-2)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLD_VERSION)
                  op: Equal
                  rhs: {(3.0.0-beta-2)}
                  spids: [135]
                )
              ]
              spids: [135]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLD_VERSION_PROTOC)
                  op: Equal
                  rhs: 
                    {(http) (Lit_Other ":") 
                      (
//repo1.maven.org/maven2/com/google/protobuf/protoc/3.0.0-beta-2/protoc-3.0.0-beta-2-linux-x86_64.exe
                      )
                    }
                  spids: [139]
                )
              ]
              spids: [139]
            )
          ]
          spids: [131 132 145 -1]
        )
        (case_arm
          pat_list: [{(3.0.0-beta-3)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLD_VERSION)
                  op: Equal
                  rhs: {(3.0.0-beta-3)}
                  spids: [152]
                )
              ]
              spids: [152]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLD_VERSION_PROTOC)
                  op: Equal
                  rhs: 
                    {(http) (Lit_Other ":") 
                      (
//repo1.maven.org/maven2/com/google/protobuf/protoc/3.0.0-beta-3/protoc-3.0.0-beta-3-linux-x86_64.exe
                      )
                    }
                  spids: [156]
                )
              ]
              spids: [156]
            )
          ]
          spids: [148 149 162 -1]
        )
        (case_arm
          pat_list: [{(3.0.0-beta-4)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLD_VERSION)
                  op: Equal
                  rhs: {(3.0.0-beta-4)}
                  spids: [169]
                )
              ]
              spids: [169]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLD_VERSION_PROTOC)
                  op: Equal
                  rhs: 
                    {(http) (Lit_Other ":") 
                      (
//repo1.maven.org/maven2/com/google/protobuf/protoc/3.0.0-beta-4/protoc-3.0.0-beta-4-linux-x86_64.exe
                      )
                    }
                  spids: [173]
                )
              ]
              spids: [173]
            )
          ]
          spids: [165 166 179 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (C {(echo)} {(DQ ("[ERROR]: Unknown version number: ") ($ VSub_Number "$1"))})
            (C {(exit)} {(1)})
          ]
          spids: [182 183 199 -1]
        )
      ]
      spids: [68 74 201]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:VERSION_NUMBER)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(grep)} {(DQ ("^  <version>.*</version>"))} {(../../pom.xml)})
                          (C {(sed)} 
                            {
                              (DQ ("s|  <version>") (EscapedLiteralPart token:<Lit_EscapedChar "\\(">) 
                                (".*") (EscapedLiteralPart token:<Lit_EscapedChar "\\)">) ("</version>|") 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar "\\1">
                                ) ("|")
                              )
                            }
                          )
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_Backtick "`">
                spids: [208 230]
              )
            }
          spids: [207]
        )
      ]
      spids: [207]
    )
    (C {(echo)} 
      {
        (DQ ("Running compatibility tests between ") ($ VSub_Name "$VERSION_NUMBER") (" and ") 
          ($ VSub_Name "$OLD_VERSION")
        )
      }
    )
    (AndOr
      children: [
        (C {(Lit_Other "[")} {(-f)} {(../../../src/protoc)} {(Lit_Other "]")})
        (BraceGroup
          children: [(C {(echo)} {(DQ ("[ERROR]: Please build protoc first."))}) (C {(exit)} {(1)})]
          spids: [256]
        )
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(Lit_Other "[")} {(-f)} 
          {(../../core/target/protobuf-java-) ($ VSub_Name "$VERSION_NUMBER") (.jar)} {(Lit_Other "]")}
        )
        (BraceGroup
          children: [
            (C {(pushd)} {(../..)})
            (C {(mvn)} {(install)} {(-Dmaven.test.skip) (Lit_Other "=") (true)})
            (C {(popd)})
          ]
          spids: [288]
        )
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(Lit_Other "[")} {(-d)} {(protobuf)} {(Lit_Other "]")})
        (BraceGroup
          children: [
            (C {(git)} {(clone)} {(https) (Lit_Other ":") (//github.com/google/protobuf.git)})
            (C {(cd)} {(protobuf)})
            (C {(git)} {(reset)} {(--hard)} {(v) ($ VSub_Name "$TEST_VERSION")})
            (C {(cd)} {(..)})
          ]
          spids: [323]
        )
      ]
      op_id: Op_DPipe
    )
    (C {(wget)} {($ VSub_Name "$OLD_VERSION_PROTOC")} {(-O)} {(protoc)})
    (C {(chmod)} {(Lit_Other "+") (x)} {(protoc)})
    (C {(mvn)} {(clean)} {(test)} 
      {(-Dprotobuf.test.source.path) (Lit_Other "=") 
        (CommandSubPart
          command_list: (CommandList children:[(C {(pwd)})])
          left_token: <Left_CommandSub "$(">
          spids: [402 404]
        ) (/protobuf)
      } 
      {(-Dprotoc.path) (Lit_Other "=") 
        (CommandSubPart
          command_list: (CommandList children:[(C {(pwd)})])
          left_token: <Left_CommandSub "$(">
          spids: [411 413]
        ) (/protoc)
      } 
      {(-Dprotos.protoc.path) (Lit_Other "=") 
        (CommandSubPart
          command_list: (CommandList children:[(C {(pwd)})])
          left_token: <Left_CommandSub "$(">
          spids: [420 422]
        ) (/../../../src/protoc)
      } {(-Dprotobuf.version) (Lit_Other "=") ($ VSub_Name "$VERSION_NUMBER")}
    )
    (C {(mvn)} {(clean)} {(test)} 
      {(-Dprotobuf.test.source.path) (Lit_Other "=") 
        (CommandSubPart
          command_list: (CommandList children:[(C {(pwd)})])
          left_token: <Left_CommandSub "$(">
          spids: [451 453]
        ) (/protobuf)
      } 
      {(-Dprotoc.path) (Lit_Other "=") 
        (CommandSubPart
          command_list: (CommandList children:[(C {(pwd)})])
          left_token: <Left_CommandSub "$(">
          spids: [460 462]
        ) (/protoc)
      } 
      {(-Dmore_protos.protoc.path) (Lit_Other "=") 
        (CommandSubPart
          command_list: (CommandList children:[(C {(pwd)})])
          left_token: <Left_CommandSub "$(">
          spids: [469 471]
        ) (/../../../src/protoc)
      } {(-Dprotobuf.version) (Lit_Other "=") ($ VSub_Name "$VERSION_NUMBER")}
    )
    (C {(cd)} {(deps)})
    (C {(mvn)} {(assembly) (Lit_Other ":") (single)})
    (C {(cd)} {(..)})
    (C {(cp)} {(-f)} 
      {(deps/target/compatibility-test-deps-) (${ VSub_Name TEST_VERSION) 
        (-jar-with-dependencies.jar)
      } {(deps.jar)}
    )
    (C {(mvn)} {(clean)} {(install)} {(-Dmaven.test.skip) (Lit_Other "=") (true)} 
      {(-Dprotoc.path) (Lit_Other "=") 
        (CommandSubPart
          command_list: (CommandList children:[(C {(pwd)})])
          left_token: <Left_CommandSub "$(">
          spids: [539 541]
        ) (/protoc)
      } {(-Dprotobuf.version) (Lit_Other "=") ($ VSub_Name "$OLD_VERSION")}
    )
    (C {(cp)} {(-f)} {(protos/target/compatibility-protos-) (${ VSub_Name TEST_VERSION) (.jar)} 
      {(protos.jar)}
    )
    (C {(cp)} {(-f)} 
      {(more_protos/target/compatibility-more-protos-) (${ VSub_Name TEST_VERSION) (.jar)} {(more_protos.jar)}
    )
    (C {(cp)} {(-f)} {(tests/target/compatibility-tests-) (${ VSub_Name TEST_VERSION) (.jar)} 
      {(tests.jar)}
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TESTS)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(find)} {(tests)} {(-name)} {(DQ ("*Test.java"))})
                          (C {(sed)} 
                            {
                              (DQ ("s|/|.|g;s/.java") (Lit_Other "$") ("//g;s/tests.src.main.java.//g"))
                            }
                          )
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_Backtick "`">
                spids: [589 609]
              )
            }
          spids: [588]
        )
      ]
      spids: [588]
    )
    (C {(cd)} {(protobuf)})
    (C {(java)} {(-cp)} 
      {(../../../core/target/protobuf-java-) ($ VSub_Name "$VERSION_NUMBER") (.jar) (Lit_Other ":") 
        (../protos.jar) (Lit_Other ":") (../more_protos.jar) (Lit_Other ":") (../tests.jar) (Lit_Other ":") (../deps.jar)
      } {(org.junit.runner.JUnitCore)} {($ VSub_Name "$TESTS")}
    )
    (C {(cd)} {(..)})
    (C {(cd)} {(protos)})
    (C {(mvn)} {(clean)} {(package)} {(-Dmaven.test.skip) (Lit_Other "=") (true)} 
      {(-Dprotoc.path) (Lit_Other "=") 
        (CommandSubPart
          command_list: (CommandList children:[(C {(pwd)})])
          left_token: <Left_CommandSub "$(">
          spids: [669 671]
        ) (/../../../../src/protoc)
      } {(-Dprotobuf.version) (Lit_Other "=") ($ VSub_Name "$VERSION_NUMBER")}
    )
    (C {(cd)} {(..)})
    (C {(cd)} {(protobuf)})
    (C {(java)} {(-cp)} 
      {(../../../core/target/protobuf-java-) ($ VSub_Name "$VERSION_NUMBER") (.jar) (Lit_Other ":") 
        (../protos/target/compatibility-protos-) (${ VSub_Name TEST_VERSION) (.jar) (Lit_Other ":") (../more_protos.jar) (Lit_Other ":") (../tests.jar) 
        (Lit_Other ":") (../deps.jar)
      } {(org.junit.runner.JUnitCore)} {($ VSub_Name "$TESTS")}
    )
    (C {(cd)} {(..)})
    (C {(cd)} {(more_protos)})
    (C {(mvn)} {(clean)} {(package)} {(-Dmaven.test.skip) (Lit_Other "=") (true)} 
      {(-Dprotoc.path) (Lit_Other "=") 
        (CommandSubPart
          command_list: (CommandList children:[(C {(pwd)})])
          left_token: <Left_CommandSub "$(">
          spids: [734 736]
        ) (/../../../../src/protoc)
      } {(-Dprotobuf.version) (Lit_Other "=") ($ VSub_Name "$VERSION_NUMBER")}
    )
    (C {(cd)} {(..)})
    (C {(cd)} {(protobuf)})
    (C {(java)} {(-cp)} 
      {(../../../core/target/protobuf-java-) ($ VSub_Name "$VERSION_NUMBER") (.jar) (Lit_Other ":") 
        (../protos.jar) (Lit_Other ":") (../more_protos/target/compatibility-more-protos-) (${ VSub_Name TEST_VERSION) (.jar) 
        (Lit_Other ":") (../tests.jar) (Lit_Other ":") (../deps.jar)
      } {(org.junit.runner.JUnitCore)} {($ VSub_Name "$TESTS")}
    )
    (C {(cd)} {(..)})
  ]
)