(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:APR_VERSION spids:[95])
          op: Equal
          rhs: 
            {
              (word_part.BracedVarSub
                token: <VSub_Name APR_VERSION>
                suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (1.4.6))})
                spids: [96 102]
              )
            }
          spids: [95]
        )
      ]
      spids: [95]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:APU_VERSION spids:[104])
          op: Equal
          rhs: 
            {
              (word_part.BracedVarSub
                token: <VSub_Name APU_VERSION>
                suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (1.5.1))})
                spids: [105 111]
              )
            }
          spids: [104]
        )
      ]
      spids: [104]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:SERF_VERSION spids:[113])
          op: Equal
          rhs: 
            {
              (word_part.BracedVarSub
                token: <VSub_Name SERF_VERSION>
                suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (1.3.8))})
                spids: [114 120]
              )
            }
          spids: [113]
        )
      ]
      spids: [113]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:ZLIB_VERSION spids:[122])
          op: Equal
          rhs: 
            {
              (word_part.BracedVarSub
                token: <VSub_Name ZLIB_VERSION>
                suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (1.2.8))})
                spids: [123 129]
              )
            }
          spids: [122]
        )
      ]
      spids: [122]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:SQLITE_VERSION spids:[131])
          op: Equal
          rhs: 
            {
              (word_part.BracedVarSub
                token: <VSub_Name SQLITE_VERSION>
                suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (3.7.15.1))})
                spids: [132 138]
              )
            }
          spids: [131]
        )
      ]
      spids: [131]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:GMOCK_VERSION spids:[140])
          op: Equal
          rhs: 
            {
              (word_part.BracedVarSub
                token: <VSub_Name GMOCK_VERSION>
                suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (1.6.0))})
                spids: [141 147]
              )
            }
          spids: [140]
        )
      ]
      spids: [140]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:HTTPD_VERSION spids:[149])
          op: Equal
          rhs: 
            {
              (word_part.BracedVarSub
                token: <VSub_Name HTTPD_VERSION>
                suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (2.4.10))})
                spids: [150 156]
              )
            }
          spids: [149]
        )
      ]
      spids: [149]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:APR_ICONV_VERSION spids:[158])
          op: Equal
          rhs: 
            {
              (word_part.BracedVarSub
                token: <VSub_Name APR_ICONV_VERSION>
                suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (1.2.1))})
                spids: [159 165]
              )
            }
          spids: [158]
        )
      ]
      spids: [158]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:APR spids:[168])
          op: Equal
          rhs: {(apr-) (${ VSub_Name APR_VERSION)}
          spids: [168]
        )
      ]
      spids: [168]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:APR_UTIL spids:[174])
          op: Equal
          rhs: {(apr-util-) (${ VSub_Name APU_VERSION)}
          spids: [174]
        )
      ]
      spids: [174]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:SERF spids:[180])
          op: Equal
          rhs: {(serf-) (${ VSub_Name SERF_VERSION)}
          spids: [180]
        )
      ]
      spids: [180]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:ZLIB spids:[186])
          op: Equal
          rhs: {(zlib-) (${ VSub_Name ZLIB_VERSION)}
          spids: [186]
        )
      ]
      spids: [186]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:SQLITE_VERSION_LIST spids:[192])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(echo)} {($ VSub_DollarName '$SQLITE_VERSION')})
                          (C {(sed)} {(-e)} {(SQ <'s/\\./ /g'>)})
                        ]
                        negated: F
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [193 207]
              )
            }
          spids: [192]
        )
      ]
      spids: [192]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:SQLITE spids:[209])
          op: Equal
          rhs: 
            {(sqlite-amalgamation-) 
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(printf)} 
                        {(Lit_Other '%') (d) (Lit_Other '%') (02d) (Lit_Other '%') (02d) (Lit_Other '%') 
                          (02d)
                        } {($ VSub_DollarName '$SQLITE_VERSION_LIST')}
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [211 224]
              )
            }
          spids: [209]
        )
      ]
      spids: [209]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:GMOCK spids:[226])
          op: Equal
          rhs: {(gmock-) (${ VSub_Name GMOCK_VERSION)}
          spids: [226]
        )
      ]
      spids: [226]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:GMOCK_URL spids:[232])
          op: Equal
          rhs: {(https) (Lit_Other ':') (//googlemock.googlecode.com/files/)}
          spids: [232]
        )
      ]
      spids: [232]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:HTTPD spids:[238])
          op: Equal
          rhs: {(httpd-) (${ VSub_Name HTTPD_VERSION)}
          spids: [238]
        )
      ]
      spids: [238]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:APR_ICONV spids:[244])
          op: Equal
          rhs: {(apr-iconv-) (${ VSub_Name APR_ICONV_VERSION)}
          spids: [244]
        )
      ]
      spids: [244]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:BASEDIR spids:[251])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: (command.CommandList children:[(C {(pwd)})])
                left_token: <Left_Backtick '`'>
                spids: [252 254]
              )
            }
          spids: [251]
        )
      ]
      spids: [251]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:TEMPDIR spids:[256])
          op: Equal
          rhs: {($ VSub_DollarName '$BASEDIR') (/temp)}
          spids: [256]
        )
      ]
      spids: [256]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:HTTP_FETCH spids:[261])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [261]
        )
      ]
      spids: [261]
    )
    (command.AndOr
      ops: [Op_DAmp Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$HTTP_FETCH'))} {(Lit_Other ']')})
        (command.SimpleCommand
          words: [{(type)} {(wget)}]
          redirects: [
            (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
            (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
          ]
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:HTTP_FETCH spids:[287])
              op: Equal
              rhs: {(DQ ('wget -q -nc'))}
              spids: [287]
            )
          ]
          spids: [287]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$HTTP_FETCH'))} {(Lit_Other ']')})
        (command.SimpleCommand
          words: [{(type)} {(curl)}]
          redirects: [
            (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
            (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
          ]
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:HTTP_FETCH spids:[316])
              op: Equal
              rhs: {(DQ ('curl -sOL'))}
              spids: [316]
            )
          ]
          spids: [316]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DAmp Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$HTTP_FETCH'))} {(Lit_Other ']')})
        (command.SimpleCommand
          words: [{(type)} {(fetch)}]
          redirects: [
            (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
            (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
          ]
        )
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:HTTP_FETCH spids:[345])
              op: Equal
              rhs: {(DQ ('fetch -q'))}
              spids: [345]
            )
          ]
          spids: [345]
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:APACHE_MIRROR spids:[357])
          op: Equal
          rhs: {(http) (Lit_Other ':') (//archive.apache.org/dist)}
          spids: [357]
        )
      ]
      spids: [357]
    )
    (command.FuncDef
      name: usage
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0'))})
            (C {(echo)} 
              {(DQ ('Usage: ') ($ VSub_Number '$0') (' [ apr | serf | zlib | sqlite | gmock ] ...'))}
            )
            (command.ControlFlow
              token: <ControlFlow_Exit exit>
              arg_word: {($ VSub_Number '$1')}
            )
          ]
          spids: [370]
        )
      spids: [366 369]
    )
    (command.FuncDef
      name: get_apr
      body: 
        (command.BraceGroup
          children: [
            (C {(cd)} {($ VSub_DollarName '$TEMPDIR')})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-d)} {($ VSub_DollarName '$BASEDIR') (/apr)})
                (C {($ VSub_DollarName '$HTTP_FETCH')} 
                  {($ VSub_DollarName '$APACHE_MIRROR') (/apr/) ($ VSub_DollarName '$APR') (.tar.bz2)}
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-d)} {($ VSub_DollarName '$BASEDIR') (/apr-util)})
                (C {($ VSub_DollarName '$HTTP_FETCH')} 
                  {($ VSub_DollarName '$APACHE_MIRROR') (/apr/) ($ VSub_DollarName '$APR_UTIL') 
                    (.tar.bz2)
                  }
                )
              ]
            )
            (C {(cd)} {($ VSub_DollarName '$BASEDIR')})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-d)} {($ VSub_DollarName '$BASEDIR') (/apr)})
                (command.Pipeline
                  children: [
                    (C {(bzip2)} {(-dc)} 
                      {($ VSub_DollarName '$TEMPDIR') (/) ($ VSub_DollarName '$APR') (.tar.bz2)}
                    )
                    (C {(tar)} {(-xf)} {(-)})
                  ]
                  negated: F
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-d)} {($ VSub_DollarName '$BASEDIR') (/apr-util)})
                (command.Pipeline
                  children: [
                    (C {(bzip2)} {(-dc)} 
                      {($ VSub_DollarName '$TEMPDIR') (/) ($ VSub_DollarName '$APR_UTIL') (.tar.bz2)}
                    )
                    (C {(tar)} {(-xf)} {(-)})
                  ]
                  negated: F
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-d)} {($ VSub_DollarName '$BASEDIR') (/apr)})
                (C {(mv)} {($ VSub_DollarName '$APR')} {(apr)})
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-d)} {($ VSub_DollarName '$BASEDIR') (/apr-util)})
                (C {(mv)} {($ VSub_DollarName '$APR_UTIL')} {(apr-util)})
              ]
            )
          ]
          spids: [404]
        )
      spids: [400 403]
    )
    (command.FuncDef
      name: get_serf
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(-d)} {($ VSub_DollarName '$BASEDIR') (/serf)})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (C {(cd)} {($ VSub_DollarName '$TEMPDIR')})
            (C {($ VSub_DollarName '$HTTP_FETCH')} 
              {(https) (Lit_Other ':') (//archive.apache.org/dist/serf/) ($ VSub_DollarName '$SERF') 
                (.tar.bz2)
              }
            )
            (C {(cd)} {($ VSub_DollarName '$BASEDIR')})
            (command.Pipeline
              children: [
                (C {(bzip2)} {(-dc)} 
                  {($ VSub_DollarName '$TEMPDIR') (/) ($ VSub_DollarName '$SERF') (.tar.bz2)}
                )
                (C {(tar)} {(-xf)} {(-)})
              ]
              negated: F
            )
            (C {(mv)} {($ VSub_DollarName '$SERF')} {(serf)})
          ]
          spids: [545]
        )
      spids: [541 544]
    )
    (command.FuncDef
      name: get_zlib
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(-d)} {($ VSub_DollarName '$BASEDIR') (/zlib)})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (C {(cd)} {($ VSub_DollarName '$TEMPDIR')})
            (C {($ VSub_DollarName '$HTTP_FETCH')} 
              {(http) (Lit_Other ':') (//sourceforge.net/projects/libpng/files/zlib/) 
                ($ VSub_DollarName '$ZLIB_VERSION') (/) ($ VSub_DollarName '$ZLIB') (.tar.gz)
              }
            )
            (C {(cd)} {($ VSub_DollarName '$BASEDIR')})
            (command.Pipeline
              children: [
                (C {(gzip)} {(-dc)} 
                  {($ VSub_DollarName '$TEMPDIR') (/) ($ VSub_DollarName '$ZLIB') (.tar.gz)}
                )
                (C {(tar)} {(-xf)} {(-)})
              ]
              negated: F
            )
            (C {(mv)} {($ VSub_DollarName '$ZLIB')} {(zlib)})
          ]
          spids: [613]
        )
      spids: [609 612]
    )
    (command.FuncDef
      name: get_sqlite
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(-d)} {($ VSub_DollarName '$BASEDIR') (/sqlite-amalgamation)})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (C {(cd)} {($ VSub_DollarName '$TEMPDIR')})
            (C {($ VSub_DollarName '$HTTP_FETCH')} 
              {(http) (Lit_Other ':') (//www.sqlite.org/) ($ VSub_DollarName '$SQLITE') (.zip)}
            )
            (C {(cd)} {($ VSub_DollarName '$BASEDIR')})
            (C {(unzip)} {(-q)} 
              {($ VSub_DollarName '$TEMPDIR') (/) ($ VSub_DollarName '$SQLITE') (.zip)}
            )
            (C {(mv)} {($ VSub_DollarName '$SQLITE')} {(sqlite-amalgamation)})
          ]
          spids: [683]
        )
      spids: [679 682]
    )
    (command.FuncDef
      name: get_gmock
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(-d)} {($ VSub_DollarName '$BASEDIR') (/gmock-fused)})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (C {(cd)} {($ VSub_DollarName '$TEMPDIR')})
            (C {($ VSub_DollarName '$HTTP_FETCH')} 
              {(${ VSub_Name GMOCK_URL) (/) (${ VSub_Name GMOCK) (.zip)}
            )
            (C {(cd)} {($ VSub_DollarName '$BASEDIR')})
            (C {(unzip)} {(-q)} {($ VSub_DollarName '$TEMPDIR') (/) ($ VSub_DollarName '$GMOCK') (.zip)})
            (C {(mv)} {($ VSub_DollarName '$GMOCK') (/fused-src)} {(gmock-fused)})
            (C {(rm)} {(-fr)} {($ VSub_DollarName '$GMOCK')})
          ]
          spids: [744]
        )
      spids: [740 743]
    )
    (command.FuncDef
      name: get_deps
      body: 
        (command.BraceGroup
          children: [
            (C {(mkdir)} {(-p)} {($ VSub_DollarName '$TEMPDIR')})
            (command.ForEach
              iter_name: i
              iter_words: [{(zlib)} {(serf)} {(sqlite-amalgamation)} {(apr)} {(apr-util)} {(gmock-fused)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-d)} {($ VSub_DollarName '$i')} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.SimpleCommand
                              words: [
                                {(echo)}
                                {
                                  (DQ ("Local directory '") ($ VSub_DollarName '$i') 
                                    ("' already exists; the downloaded copy won't be used")
                                  )
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_GreatAnd '>&'>
                                  fd: 16777215
                                  arg_word: {(2)}
                                )
                              ]
                            )
                          ]
                          spids: [16777215 862]
                        )
                      ]
                      spids: [16777215 877]
                    )
                  ]
                  spids: [848 880]
                )
              spids: [834 846]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ForEach
                      iter_name: target
                      iter_words: [{(DQ ($ VSub_At '$@'))}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$target'))} 
                                          {(KW_Bang '!') (Lit_Other '=')} {(DQ (deps))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.AndOr
                                      ops: [Op_DPipe]
                                      children: [
                                        (C {(get_) ($ VSub_DollarName '$target')})
                                        (C {(usage)})
                                      ]
                                    )
                                  ]
                                  spids: [16777215 932]
                                )
                              ]
                              else_action: [(C {(usage)})]
                              spids: [943 949]
                            )
                          ]
                          spids: [911 952]
                        )
                      spids: [905 909]
                    )
                  ]
                  spids: [16777215 897]
                )
              ]
              else_action: [
                (C {(get_apr)})
                (C {(get_serf)})
                (C {(get_zlib)})
                (C {(get_sqlite)})
                (C {(echo)})
                (C {(echo)} {(DQ ('If you require mod_dav_svn, the recommended version of httpd is:'))})
                (C {(echo)} 
                  {
                    (DQ ('   ') ($ VSub_DollarName '$APACHE_MIRROR') (/httpd/) 
                      ($ VSub_DollarName '$HTTPD') (.tar.bz2)
                    )
                  }
                )
                (C {(echo)})
                (C {(echo)} {(DQ ('If you require apr-iconv, its recommended version is:'))})
                (C {(echo)} 
                  {
                    (DQ ('   ') ($ VSub_DollarName '$APACHE_MIRROR') (/apr/) 
                      ($ VSub_DollarName '$APR_ICONV') (.tar.bz2)
                    )
                  }
                )
              ]
              spids: [955 1014]
            )
            (C {(rm)} {(-rf)} {($ VSub_DollarName '$TEMPDIR')})
          ]
          spids: [818]
        )
      spids: [814 817]
    )
    (C {(get_deps)} {(DQ ($ VSub_At '$@'))})
  ]
)