(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:WORKSPACE_BASE)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(pwd)})])
                left_token: <Left_Backtick "`">
                spids: [14 16]
              )
            }
          spids: [13]
        )
      ]
      spids: [13]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MY_DIR)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(dirname)} {(DQ ($ VSub_Number "$0"))})])
                  left_token: <Left_CommandSub "$(">
                  spids: [20 26]
                )
              )
            }
          spids: [18]
        )
      ]
      spids: [18]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TEST_SCRIPT)
          op: Equal
          rhs: {($ VSub_Name "$MY_DIR") (/../tests.sh)}
          spids: [29]
        )
      ]
      spids: [29]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:BUILD_DIR) op:Equal rhs:{(/tmp/protobuf)} spids:[33])]
      spids: [33]
    )
    (C {(set)} {(-e)})
    (C {(set)} {(-x)})
    (C {(rm)} {(-rf)} {($ VSub_Name "$BUILD_DIR")})
    (C {(mkdir)} {(-p)} {($ VSub_Name "$BUILD_DIR")})
    (C {(cd)} {($ VSub_Name "$BUILD_DIR")})
    (C {(git)} {(clone)} {(/var/local/jenkins/protobuf)})
    (C {(cd)} {(protobuf)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OUTPUT_DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(mktemp)} {(-d)})])
                left_token: <Left_Backtick "`">
                spids: [89 93]
              )
            }
          spids: [88]
        )
      ]
      spids: [88]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LOG_OUTPUT_DIR)
          op: Equal
          rhs: {($ VSub_Name "$OUTPUT_DIR") (/logs)}
          spids: [95]
        )
      ]
      spids: [95]
    )
    (C {(mkdir)} {(-p)} {($ VSub_Name "$LOG_OUTPUT_DIR") (/1/cpp)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CPP_STDOUT)
          op: Equal
          rhs: {($ VSub_Name "$LOG_OUTPUT_DIR") (/1/cpp/stdout)}
          spids: [138]
        )
      ]
      spids: [138]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CPP_STDERR)
          op: Equal
          rhs: {($ VSub_Name "$LOG_OUTPUT_DIR") (/1/cpp/stderr)}
          spids: [142]
        )
      ]
      spids: [142]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TIME_CMD)
          op: Equal
          rhs: {(DQ ("/usr/bin/time -f %e -o ") ($ VSub_Name "$LOG_OUTPUT_DIR") (/1/cpp/build_time))}
          spids: [156]
        )
      ]
      spids: [156]
    )
    (SimpleCommand
      words: [{($ VSub_Name "$TIME_CMD")} {($ VSub_Name "$TEST_SCRIPT")} {(cpp)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(tee)} {($ VSub_Name "$CPP_STDOUT")})])
                left_token: <Left_ProcSubOut ">(">
                spids: [172 176]
              )
            }
          spids: [170]
        )
        (Redir
          op_id: Redir_Great
          fd: 2
          arg_word: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [{(tee)} {($ VSub_Name "$CPP_STDERR")}]
                        redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[185])]
                      )
                    ]
                  )
                left_token: <Left_ProcSubOut ">(">
                spids: [180 187]
              )
            }
          spids: [178]
        )
      ]
    )
    (AndOr
      children: [
        (C {(parallel)} {(--results)} {($ VSub_Name "$LOG_OUTPUT_DIR")} {(--joblog)} 
          {($ VSub_Name "$OUTPUT_DIR") (/joblog)} {($ VSub_Name "$TEST_SCRIPT")} {(Lit_Other ":") (Lit_Other ":") (Lit_Other ":")} 
          {($ VSub_Name "$TEST_SET")}
        )
        (C {(true)})
      ]
      op_id: Op_DPipe
    )
    (C {(cat)} {($ VSub_Name "$OUTPUT_DIR") (/joblog)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:COPY_FROM_DOCKER)
          op: Equal
          rhs: {(/var/local/git/protobuf/testoutput)}
          spids: [237]
        )
      ]
      spids: [237]
    )
    (C {(mkdir)} {(-p)} {($ VSub_Name "$COPY_FROM_DOCKER")})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TESTOUTPUT_XML_FILE)
          op: Equal
          rhs: {($ VSub_Name "$COPY_FROM_DOCKER") (/testresults.xml)}
          spids: [246]
        )
      ]
      spids: [246]
    )
    (SimpleCommand
      words: [{(python)} {($ VSub_Name "$MY_DIR") (/make_test_output.py)} {($ VSub_Name "$OUTPUT_DIR")}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name "$TESTOUTPUT_XML_FILE")}
          spids: [264]
        )
      ]
    )
    (C {(ls)} {(-l)} {($ VSub_Name "$TESTOUTPUT_XML_FILE")})
  ]
)