(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WORKSPACE_BASE)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))}
          spids: [13]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MY_DIR)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<dirname>} {(DQ ($ Id.VSub_Number '$0'))})
                )
              )
            }
          spids: [20]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TEST_SCRIPT)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$MY_DIR') <'/../tests.sh'>}
          spids: [31]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BUILD_DIR)
          op: assign_op.Equal
          rhs: {<'/tmp/protobuf'>}
          spids: [35]
        )
      ]
    )
    (C {<Id.KW_Set set>} {<-e>})
    (C {<Id.KW_Set set>} {<-x>})
    (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$BUILD_DIR')})
    (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$BUILD_DIR')})
    (C {<cd>} {($ Id.VSub_DollarName '$BUILD_DIR')})
    (C {<git>} {<clone>} {<'/var/local/jenkins/protobuf'>})
    (C {<cd>} {<protobuf>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OUTPUT_DIR)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<mktemp>} {<-d>}))}
          spids: [90]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LOG_OUTPUT_DIR)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$OUTPUT_DIR') <'/logs'>}
          spids: [99]
        )
      ]
    )
    (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$LOG_OUTPUT_DIR') <'/1/cpp'>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPP_STDOUT)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$LOG_OUTPUT_DIR') <'/1/cpp/stdout'>}
          spids: [142]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPP_STDERR)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$LOG_OUTPUT_DIR') <'/1/cpp/stderr'>}
          spids: [146]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TIME_CMD)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'/usr/bin/time -f %e -o '> ($ Id.VSub_DollarName '$LOG_OUTPUT_DIR') 
                <'/1/cpp/build_time'>
              )
            }
          spids: [160]
        )
      ]
    )
    (command.Simple
      words: [{($ Id.VSub_DollarName '$TIME_CMD')} {($ Id.VSub_DollarName '$TEST_SCRIPT')} {<cpp>}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: 
            {
              (command_sub
                left_token: <Id.Left_ProcSubOut '>('>
                child: (C {<tee>} {($ Id.VSub_DollarName '$CPP_STDOUT')})
              )
            }
        )
        (redir
          op: <Id.Redir_Great '2>'>
          loc: (redir_loc.Fd fd:2)
          arg: 
            {
              (command_sub
                left_token: <Id.Left_ProcSubOut '>('>
                child: 
                  (command.Simple
                    words: [{<tee>} {($ Id.VSub_DollarName '$CPP_STDERR')}]
                    redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                    do_fork: T
                  )
              )
            }
        )
      ]
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<parallel>} {<--results>} {($ Id.VSub_DollarName '$LOG_OUTPUT_DIR')} {<--joblog>} 
          {($ Id.VSub_DollarName '$OUTPUT_DIR') <'/joblog'>} {($ Id.VSub_DollarName '$TEST_SCRIPT')} {<Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'>} 
          {($ Id.VSub_DollarName '$TEST_SET')}
        )
        (C {<true>})
      ]
    )
    (C {<cat>} {($ Id.VSub_DollarName '$OUTPUT_DIR') <'/joblog'>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:COPY_FROM_DOCKER)
          op: assign_op.Equal
          rhs: {<'/var/local/git/protobuf/testoutput'>}
          spids: [241]
        )
      ]
    )
    (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$COPY_FROM_DOCKER')})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TESTOUTPUT_XML_FILE)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$COPY_FROM_DOCKER') <'/testresults.xml'>}
          spids: [250]
        )
      ]
    )
    (command.Simple
      words: [
        {<python>}
        {($ Id.VSub_DollarName '$MY_DIR') <'/make_test_output.py'>}
        {($ Id.VSub_DollarName '$OUTPUT_DIR')}
      ]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$TESTOUTPUT_XML_FILE')}
        )
      ]
      do_fork: T
    )
    (C {<ls>} {<-l>} {($ Id.VSub_DollarName '$TESTOUTPUT_XML_FILE')})
  ]
)