(command.CommandList
  children: [
    (C {<set>} {<-xe>})
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name OS>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_ColonQMark ':?'>
              arg_word: {(DQ <'Environment variable \'OS\' must be set (e.g., OS=ubuntu:14.04)'>)}
            )
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BUILDTOOL>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_ColonQMark ':?'>
              arg_word: 
                {(DQ <'Environment variable \'BUILDTOOL\' must be set (e.g., BUILDTOOL=autotools)'>)}
            )
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name COMPILER>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_ColonQMark ':?'>
              arg_word: {(DQ <'Environment variable \'COMPILER\' must be set (e.g., COMPILER=gcc)'>)}
            )
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name CONFIGURATION>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_ColonQMark ':?'>
              arg_word: 
                {
                  (DQ 
                    <
'Environment variable \'CONFIGURATION\' must be set (e.g., CONFIGURATION=\'--enable-libevent --enable-ssl\')'
                    >
                  )
                }
            )
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name ENVIRONMENT>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_ColonQMark ':?'>
              arg_word: 
                {
                  (DQ 
                    <
'Environment variable \'ENVIRONMENT\' must be set (e.g., ENVIRONMENT=\'GLOG_v=1 MESOS_VERBOSE=1\')'
                    >
                  )
                }
            )
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MESOS_DIRECTORY)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.AndOr
                    ops: [Id.Op_DAmp]
                    children: [
                      (C {<cd>} 
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<dirname>} {(DQ ($ Id.VSub_Number '$0'))})
                            ) <'/..'>
                          )
                        }
                      )
                      (C {<pwd>})
                    ]
                  )
              )
            }
          spids: [73]
        )
      ]
    )
    (C {<cd>} {(DQ ($ Id.VSub_DollarName '$MESOS_DIRECTORY'))})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOCKERFILE)
          op: assign_op.Equal
          rhs: {(DQ <Dockerfile>)}
          spids: [113]
        )
      ]
    )
    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$DOCKERFILE')})
    (command.ShFunction
      name: append_dockerfile
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<echo>} {($ Id.VSub_Number '$1')}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$DOCKERFILE')}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$OS')}
      arms: [
        (case_arm
          pat_list: [{<centos> <Id.Lit_Star '*'>}]
          action: [
            (C {<append_dockerfile>} {(DQ <'FROM '> ($ Id.VSub_DollarName '$OS'))})
            (C {<append_dockerfile>} {(DQ <'RUN yum install -y which'>)})
            (C {<append_dockerfile>} {(DQ <'RUN yum groupinstall -y \'Development Tools\''>)})
            (C {<append_dockerfile>} {(DQ <'RUN yum install -y epel-release'>)})
            (C {<append_dockerfile>} {(DQ <'RUN yum install -y clang git maven cmake'>)})
            (C {<append_dockerfile>} 
              {
                (DQ 
                  <
'RUN yum install -y java-1.8.0-openjdk-devel python-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-utils-devel libevent-devel libev-devel'
                  >
                )
              }
            )
            (C {<append_dockerfile>} {(DQ <'RUN adduser mesos'>)})
          ]
          spids: [161 163 239 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> <ubuntu> <Id.Lit_Star '*'>}]
          action: [
            (C {<append_dockerfile>} {(DQ <'FROM '> ($ Id.VSub_DollarName '$OS'))})
            (C {<append_dockerfile>} {(DQ <'RUN rm -rf /var/lib/apt/lists/*'>)})
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} 
                  {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>} {<-m>})))} {<Id.Lit_Equals '='>} {(DQ <x86_64>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CLANG_PKG)
                      op: assign_op.Equal
                      rhs: {<clang-3.5>}
                      spids: [310]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CLANG_PKG)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [315]
                    )
                  ]
                )
              ]
            )
            (C {<append_dockerfile>} {(DQ <'RUN apt-get update'>)})
            (C {<append_dockerfile>} 
              {
                (DQ <'RUN apt-get -y install build-essential '> ($ Id.VSub_DollarName '$CLANG_PKG') 
                  <' git maven autoconf libtool cmake'>
                )
              }
            )
            (C {<append_dockerfile>} 
              {
                (DQ 
                  <
'RUN apt-get -y install openjdk-7-jdk python-dev libcurl4-nss-dev libsasl2-dev libapr1-dev libsvn-dev libevent-dev libev-dev'
                  >
                )
              }
            )
            (C {<append_dockerfile>} {(DQ <'RUN apt-get -y install wget curl sed'>)})
            (C {<append_dockerfile>} {(DQ <'RUN adduser --disabled-password --gecos \'\' mesos'>)})
          ]
          spids: [242 245 360 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (C {<echo>} {(DQ <'Unknown OS '> ($ Id.VSub_DollarName '$OS'))})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [363 364 380 -1]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$COMPILER')}
      arms: [
        (case_arm
          pat_list: [{<gcc>}]
          action: [
            (C {<append_dockerfile>} {(DQ <'ENV CC gcc'>)})
            (C {<append_dockerfile>} {(DQ <'ENV CXX g++'>)})
          ]
          spids: [392 393 410 -1]
        )
        (case_arm
          pat_list: [{<clang>}]
          action: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$OS')}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <ubuntu> <Id.Lit_Star '*'>}]
                  action: [
                    (C {<append_dockerfile>} {(DQ <'ENV CC clang-3.5'>)})
                    (C {<append_dockerfile>} {(DQ <'ENV CXX clang++-3.5'>)})
                  ]
                  spids: [424 427 444 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<append_dockerfile>} {(DQ <'ENV CC clang'>)})
                    (C {<append_dockerfile>} {(DQ <'ENV CXX clang++'>)})
                  ]
                  spids: [447 448 465 -1]
                )
              ]
            )
          ]
          spids: [413 414 471 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (C {<echo>} {(DQ <'Unknown Compiler '> ($ Id.VSub_DollarName '$COMPILER'))})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [474 475 491 -1]
        )
      ]
    )
    (C {<append_dockerfile>} {(DQ <'WORKDIR mesos'>)})
    (C {<append_dockerfile>} {(DQ <'COPY . /mesos/'>)})
    (C {<append_dockerfile>} {(DQ <'RUN chown -R mesos /mesos'>)})
    (C {<append_dockerfile>} {(DQ <'USER mesos'>)})
    (C {<append_dockerfile>} {(DQ <'ENV GTEST_OUTPUT xml:report.xml'>)})
    (C {<append_dockerfile>} 
      {(DQ <'ENV DISTCHECK_CONFIGURE_FLAGS '> ($ Id.VSub_DollarName '$CONFIGURATION'))}
    )
    (C {<append_dockerfile>} {(DQ <'ENV '> ($ Id.VSub_DollarName '$ENVIRONMENT'))})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$COVERITY_TOKEN'))} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (C {<append_dockerfile>} 
              {
                (DQ <'ENV MESOS_VERSION '> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (C {<grep>} {(DQ <AC_INIT>)} {<configure.ac>})
                          (C {<sed>} {(SQ <'s/AC_INIT[(]\\[mesos\\], \\[\\(.*\\)\\][)]/\\1/'>)})
                        ]
                        negated: F
                      )
                  )
                )
              }
            )
            (C {<append_dockerfile>} 
              {
                (DQ <'RUN wget https://scan.coverity.com/download/linux64  --post-data '> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'token='> ($ Id.VSub_DollarName '$COVERITY_TOKEN') <'&project=Mesos'> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' -O coverity_tool.tgz'>
                )
              }
            )
            (C {<append_dockerfile>} 
              {(DQ <'RUN tar xvf coverity_tool.tgz; mv cov-analysis-linux* cov-analysis'>)}
            )
            (C {<append_dockerfile>} 
              {
                (DQ <'CMD ./bootstrap && ./configure '> ($ Id.VSub_DollarName '$CONFIGURATION') 
                  <
' &&  cov-analysis/bin/cov-build -dir cov-int make -j6 && tar czcf mesos.tgz cov-int && tail cov-int/build-log.txt && curl --form '
                  > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'token='> 
                  ($ Id.VSub_DollarName '$COVERITY_TOKEN') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' --form '> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'email=dev@mesos.apache.org'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                  <'  --form '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'file=@mesos.tgz'> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' --form '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'version='> 
                  ($ Id.VSub_DollarName '$MESOS_VERSION') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' --form '> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'description=\'Continious Coverity Build\''> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'   https://scan.coverity.com/builds?project=Mesos'>
                )
              }
            )
          ]
          spids: [580 593]
        )
      ]
      else_action: [
        (command.Case
          to_match: {($ Id.VSub_DollarName '$BUILDTOOL')}
          arms: [
            (case_arm
              pat_list: [{<autotools>}]
              action: [
                (C {<append_dockerfile>} 
                  {
                    (DQ <'CMD ./bootstrap && ./configure '> ($ Id.VSub_DollarName '$CONFIGURATION') 
                      <' && make -j6 distcheck 2>&1'>
                    )
                  }
                )
              ]
              spids: [693 694 706 -1]
            )
            (case_arm
              pat_list: [{<cmake>}]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CONFIGURATION)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name CONFIGURATION>
                            suffix_op: 
                              (suffix_op.PatSub
                                pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>)}
                                replace: {(DQ )}
                                replace_mode: Id.Lit_Slash
                              )
                          )
                        }
                      spids: [721]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CONFIGURATION)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name CONFIGURATION>
                            suffix_op: 
                              (suffix_op.PatSub
                                pat: {<->}
                                replace: {(DQ <_>)}
                                replace_mode: Id.Lit_Slash
                              )
                          )
                        }
                      spids: [737]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CONFIGURATION)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name CONFIGURATION>
                            suffix_op: 
                              (suffix_op.PatSub
                                pat: {<__>}
                                replace: {(DQ <-D>)}
                                replace_mode: Id.Lit_Slash
                              )
                          )
                        }
                      spids: [754]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CONFIGURATION)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name CONFIGURATION>
                            suffix_op: (suffix_op.Unary tok:<Id.VOp1_DCaret '^^'> arg_word:{})
                          )
                        }
                      spids: [771]
                    )
                  ]
                )
                (command.Simple
                  words: [{<read>} {<-r>} {<-a>} {<array>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_TLess '<<<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(DQ ($ Id.VSub_DollarName '$CONFIGURATION'))}
                    )
                  ]
                  more_env: [(env_pair name:IFS val:{(SQ <' '>)} spids:[783])]
                  do_fork: T
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CONFIGURATION)
                      op: assign_op.Equal
                      rhs: {(DQ )}
                      spids: [804]
                    )
                  ]
                )
                (command.ForEach
                  iter_name: element
                  iter_words: [
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name array>
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                        )
                      )
                    }
                  ]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:CONFIGURATION)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$CONFIGURATION') <' '> 
                                    ($ Id.VSub_DollarName '$element') <'=1'>
                                  )
                                }
                              spids: [828]
                            )
                          ]
                        )
                      ]
                    )
                )
                (C {<append_dockerfile>} 
                  {
                    (DQ <'CMD ./bootstrap && mkdir build && cd build && cmake '> 
                      ($ Id.VSub_DollarName '$CONFIGURATION') <' .. && make -j6 check && make -j6'>
                    )
                  }
                )
              ]
              spids: [709 710 866 -1]
            )
            (case_arm
              pat_list: [{<Id.Lit_Star '*'>}]
              action: [
                (C {<echo>} {(DQ <'Unknown build tool '> ($ Id.VSub_DollarName '$BUILDTOOL'))})
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              spids: [869 870 886 -1]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TAG)
          op: assign_op.Equal
          rhs: 
            {<mesos-> 
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>})
              ) <-> ($ Id.VSub_DollarName '$RANDOM')
            }
          spids: [897]
        )
      ]
    )
    (C {<docker>} {<build>} {<--no-cache> <Id.Lit_Equals '='> <true>} {<-t>} 
      {($ Id.VSub_DollarName '$TAG')} {<.>}
    )
    (C {<trap>} {(DQ <'docker rmi '> ($ Id.VSub_DollarName '$TAG'))} {<EXIT>})
    (C {<docker>} {<run>} {<--privileged>} {<--rm>} {($ Id.VSub_DollarName '$TAG')})
  ]
)