(command.CommandList
  children: [
    (C {<set>} {<-e>})
    (C {<.>} 
      {
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          child: (C {<dirname>} {(${ Id.VSub_Number 0)})
        ) <'/atexit.sh'>
      }
    )
    (C {<.>} 
      {
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          child: (C {<dirname>} {(${ Id.VSub_Number 0)})
        ) <'/colors.sh'>
      }
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {(${ Id.VSub_Pound '#')} {<-eq>} {<2>})
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {<echo>} 
                  {
                    (DQ <'Usage: '> 
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<basename>} {(${ Id.VSub_Number 0)})
                      ) <' [version] [candidate]'>
                    )
                  }
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:VERSION)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Number 1)}
          spids: [90]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CANDIDATE)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Number 2)}
          spids: [95]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TAG)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name VERSION) <-rc> (${ Id.VSub_Name CANDIDATE))}
          spids: [100]
        )
      ]
    )
    (C {<echo>} 
      {(DQ (${ Id.VSub_Name GREEN) <'Tagging '> (${ Id.VSub_Name TAG) (${ Id.VSub_Name NORMAL))}
    )
    (C {<read>} {<-p>} {(DQ <'Hit enter to continue ... '>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WORK_DIR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<mktemp>} {<-d>} {<'/tmp/mesos-tag-XXXX'>})
              )
            }
          spids: [137]
        )
      ]
    )
    (C {<atexit>} {(DQ <'rm -rf '> (${ Id.VSub_Name WORK_DIR))})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MESOS_GIT_LOCAL)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.CommandList
                    children: [
                      (command.Sentence
                        child: 
                          (C {<cd>} 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<dirname>} {($ Id.VSub_Number '$0')})
                                )
                              ) <'/..'>
                            }
                          )
                        terminator: <Id.Op_Semi _>
                      )
                      (C {<pwd>})
                    ]
                  )
              )
            }
          spids: [161]
        )
      ]
    )
    (C {<pushd>} {(${ Id.VSub_Name WORK_DIR)})
    (C {<git>} {<clone>} {<--shared>} {(${ Id.VSub_Name MESOS_GIT_LOCAL)} {<--branch>} 
      {(${ Id.VSub_Name TAG)} {<mesos>}
    )
    (C {<pushd>} {<mesos>})
    (C {<echo>} {(DQ <'Confirming that configure.ac contains '> (${ Id.VSub_Name VERSION))})
    (C {<grep>} 
      {
        (DQ <Id.Lit_BadBackslash '\\'> <'[mesos'> <Id.Lit_BadBackslash '\\'> <'], '> 
          <Id.Lit_BadBackslash '\\'> <'['> (${ Id.VSub_Name VERSION) <Id.Lit_BadBackslash '\\'> <']'>
        )
      } {<configure.ac>}
    )
    (C {<echo>} 
      {
        (DQ (${ Id.VSub_Name GREEN) <'Updating configure.ac to include the release candidate.'> 
          (${ Id.VSub_Name NORMAL)
        )
      }
    )
    (C {<sed>} {<-i>} {(SQ )} 
      {
        (DQ <'s/'> <Id.Lit_BadBackslash '\\'> <'[mesos'> <Id.Lit_BadBackslash '\\'> <'], '> 
          <Id.Lit_BadBackslash '\\'> <'[.*'> <Id.Lit_BadBackslash '\\'> <']/[mesos], ['> (${ Id.VSub_Name TAG) <']/'>
        )
      } {<configure.ac>}
    )
    (C {<'./bootstrap'>})
    (C {<mkdir>} {<build>})
    (C {<pushd>} {<build>})
    (C {<'../configure'>} {<--disable-optimize>})
    (C {<pushd>} {<3rdparty>})
    (C {<make>} {<-j3>})
    (C {<popd>})
    (C {<make>} {<-j3>} {<maven-install>})
    (C {<mvn>} {<deploy>} {<-f>} {<'src/java/mesos.pom'>})
    (C {<echo>} 
      {
        (DQ (${ Id.VSub_Name GREEN) <'Successfully deployed the jar to staging maven repository ...'> 
          (${ Id.VSub_Name NORMAL)
        )
      }
    )
    (C {<read>} {<-p>} 
      {(DQ <'Please *close* and *release* the staging repository and hit enter to continue ...'>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:input)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [357]
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Name input>
                      suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<n>})
                    )
                  } {<Id.Lit_Equals '='>} {(DQ <y>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          children: [
            (C {<read>} {<-p>} {(DQ <'Have you released the maven repository? (y/n): '>)} {<input>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Name input>
                      suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<n>})
                    )
                  } {<Id.Lit_Equals '='>} {(DQ <y>)} {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} {(DQ <'Please release the staging maven repository before continuing'>)})
              ]
            )
          ]
        )
    )
    (C {<popd>})
    (C {<echo>} 
      {
        (DQ (${ Id.VSub_Name GREEN) <'Pushing the git tag to the repository...'> 
          (${ Id.VSub_Name NORMAL)
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MESOS_GIT_URL)
          op: assign_op.Equal
          rhs: {(DQ <'https://git-wip-us.apache.org/repos/asf/mesos.git'>)}
          spids: [442]
        )
      ]
    )
    (C {<git>} {<push>} {(${ Id.VSub_Name MESOS_GIT_URL)} {<'refs/tags/'> (${ Id.VSub_Name TAG)})
    (C {<popd>})
    (C {<popd>})
    (C {<echo>} {(DQ (${ Id.VSub_Name GREEN) <'Success!'> (${ Id.VSub_Name NORMAL))})
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)