(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:APR_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name APR_VERSION>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{(DQ <1.4.6>)})
              )
            }
          spids: [95]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:APU_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name APU_VERSION>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{(DQ <1.5.1>)})
              )
            }
          spids: [104]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SERF_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name SERF_VERSION>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{(DQ <1.3.8>)})
              )
            }
          spids: [113]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ZLIB_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name ZLIB_VERSION>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{(DQ <1.2.8>)})
              )
            }
          spids: [122]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SQLITE_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name SQLITE_VERSION>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{(DQ <3.7.15.1>)})
              )
            }
          spids: [131]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GMOCK_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name GMOCK_VERSION>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{(DQ <1.6.0>)})
              )
            }
          spids: [140]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HTTPD_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name HTTPD_VERSION>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{(DQ <2.4.10>)})
              )
            }
          spids: [149]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:APR_ICONV_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name APR_ICONV_VERSION>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{(DQ <1.2.1>)})
              )
            }
          spids: [158]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:APR)
          op: assign_op.Equal
          rhs: {<apr-> (${ Id.VSub_Name APR_VERSION)}
          spids: [168]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:APR_UTIL)
          op: assign_op.Equal
          rhs: {<apr-util-> (${ Id.VSub_Name APU_VERSION)}
          spids: [174]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SERF)
          op: assign_op.Equal
          rhs: {<serf-> (${ Id.VSub_Name SERF_VERSION)}
          spids: [180]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ZLIB)
          op: assign_op.Equal
          rhs: {<zlib-> (${ Id.VSub_Name ZLIB_VERSION)}
          spids: [186]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SQLITE_VERSION_LIST)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName '$SQLITE_VERSION')})
                      (C {<sed>} {<-e>} {(SQ <'s/\\./ /g'>)})
                    ]
                    negated: F
                  )
              )
            }
          spids: [192]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SQLITE)
          op: assign_op.Equal
          rhs: 
            {<sqlite-amalgamation-> 
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (C {<printf>} 
                    {<Id.Lit_Other '%'> <d> <Id.Lit_Other '%'> <02d> <Id.Lit_Other '%'> <02d> 
                      <Id.Lit_Other '%'> <02d>
                    } {($ Id.VSub_DollarName '$SQLITE_VERSION_LIST')}
                  )
              )
            }
          spids: [213]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GMOCK)
          op: assign_op.Equal
          rhs: {<gmock-> (${ Id.VSub_Name GMOCK_VERSION)}
          spids: [232]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GMOCK_URL)
          op: assign_op.Equal
          rhs: {<https> <Id.Lit_Colon ':'> <'//googlemock.googlecode.com/files/'>}
          spids: [238]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HTTPD)
          op: assign_op.Equal
          rhs: {<httpd-> (${ Id.VSub_Name HTTPD_VERSION)}
          spids: [244]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:APR_ICONV)
          op: assign_op.Equal
          rhs: {<apr-iconv-> (${ Id.VSub_Name APR_ICONV_VERSION)}
          spids: [250]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BASEDIR)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))}
          spids: [257]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TEMPDIR)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$BASEDIR') <'/temp'>}
          spids: [264]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HTTP_FETCH)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [269]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$HTTP_FETCH'))} 
          {<Id.Lit_RBracket ']'>}
        )
        (command.Simple
          words: [{<type>} {<wget>}]
          redirects: [
            (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})
            (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
          ]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:HTTP_FETCH)
              op: assign_op.Equal
              rhs: {(DQ <'wget -q -nc'>)}
              spids: [295]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$HTTP_FETCH'))} 
          {<Id.Lit_RBracket ']'>}
        )
        (command.Simple
          words: [{<type>} {<curl>}]
          redirects: [
            (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})
            (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
          ]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:HTTP_FETCH)
              op: assign_op.Equal
              rhs: {(DQ <'curl -sOL'>)}
              spids: [324]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$HTTP_FETCH'))} 
          {<Id.Lit_RBracket ']'>}
        )
        (command.Simple
          words: [{<type>} {<fetch>}]
          redirects: [
            (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})
            (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
          ]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:HTTP_FETCH)
              op: assign_op.Equal
              rhs: {(DQ <'fetch -q'>)}
              spids: [353]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:APACHE_MIRROR)
          op: assign_op.Equal
          rhs: {<http> <Id.Lit_Colon ':'> <'//archive.apache.org/dist'>}
          spids: [365]
        )
      ]
    )
    (command.ShFunction
      name: usage
      body: 
        (BraceGroup
          children: [
            (C {<echo>} {(DQ <'Usage: '> ($ Id.VSub_Number '$0'))})
            (C {<echo>} 
              {
                (DQ <'Usage: '> ($ Id.VSub_Number '$0') <' [ apr | serf | zlib | sqlite | gmock ] ...'>)
              }
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_Number '$1')}
            )
          ]
        )
    )
    (command.ShFunction
      name: get_apr
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {($ Id.VSub_DollarName '$TEMPDIR')})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-d>} {($ Id.VSub_DollarName '$BASEDIR') <'/apr'>})
                (C {($ Id.VSub_DollarName '$HTTP_FETCH')} 
                  {($ Id.VSub_DollarName '$APACHE_MIRROR') <'/apr/'> ($ Id.VSub_DollarName '$APR') 
                    <.tar.bz2>
                  }
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-d>} {($ Id.VSub_DollarName '$BASEDIR') <'/apr-util'>})
                (C {($ Id.VSub_DollarName '$HTTP_FETCH')} 
                  {($ Id.VSub_DollarName '$APACHE_MIRROR') <'/apr/'> 
                    ($ Id.VSub_DollarName '$APR_UTIL') <.tar.bz2>
                  }
                )
              ]
            )
            (C {<cd>} {($ Id.VSub_DollarName '$BASEDIR')})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-d>} {($ Id.VSub_DollarName '$BASEDIR') <'/apr'>})
                (command.Pipeline
                  children: [
                    (C {<bzip2>} {<-dc>} 
                      {($ Id.VSub_DollarName '$TEMPDIR') <'/'> ($ Id.VSub_DollarName '$APR') <.tar.bz2>}
                    )
                    (C {<tar>} {<-xf>} {<->})
                  ]
                  negated: F
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-d>} {($ Id.VSub_DollarName '$BASEDIR') <'/apr-util'>})
                (command.Pipeline
                  children: [
                    (C {<bzip2>} {<-dc>} 
                      {($ Id.VSub_DollarName '$TEMPDIR') <'/'> ($ Id.VSub_DollarName '$APR_UTIL') 
                        <.tar.bz2>
                      }
                    )
                    (C {<tar>} {<-xf>} {<->})
                  ]
                  negated: F
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-d>} {($ Id.VSub_DollarName '$BASEDIR') <'/apr'>})
                (C {<mv>} {($ Id.VSub_DollarName '$APR')} {<apr>})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-d>} {($ Id.VSub_DollarName '$BASEDIR') <'/apr-util'>})
                (C {<mv>} {($ Id.VSub_DollarName '$APR_UTIL')} {<apr-util>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: get_serf
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-d>} {($ Id.VSub_DollarName '$BASEDIR') <'/serf'>})
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (C {<cd>} {($ Id.VSub_DollarName '$TEMPDIR')})
            (C {($ Id.VSub_DollarName '$HTTP_FETCH')} 
              {<https> <Id.Lit_Colon ':'> <'//archive.apache.org/dist/serf/'> 
                ($ Id.VSub_DollarName '$SERF') <.tar.bz2>
              }
            )
            (C {<cd>} {($ Id.VSub_DollarName '$BASEDIR')})
            (command.Pipeline
              children: [
                (C {<bzip2>} {<-dc>} 
                  {($ Id.VSub_DollarName '$TEMPDIR') <'/'> ($ Id.VSub_DollarName '$SERF') <.tar.bz2>}
                )
                (C {<tar>} {<-xf>} {<->})
              ]
              negated: F
            )
            (C {<mv>} {($ Id.VSub_DollarName '$SERF')} {<serf>})
          ]
        )
    )
    (command.ShFunction
      name: get_zlib
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-d>} {($ Id.VSub_DollarName '$BASEDIR') <'/zlib'>})
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (C {<cd>} {($ Id.VSub_DollarName '$TEMPDIR')})
            (C {($ Id.VSub_DollarName '$HTTP_FETCH')} 
              {<http> <Id.Lit_Colon ':'> <'//sourceforge.net/projects/libpng/files/zlib/'> 
                ($ Id.VSub_DollarName '$ZLIB_VERSION') <'/'> ($ Id.VSub_DollarName '$ZLIB') <.tar.gz>
              }
            )
            (C {<cd>} {($ Id.VSub_DollarName '$BASEDIR')})
            (command.Pipeline
              children: [
                (C {<gzip>} {<-dc>} 
                  {($ Id.VSub_DollarName '$TEMPDIR') <'/'> ($ Id.VSub_DollarName '$ZLIB') <.tar.gz>}
                )
                (C {<tar>} {<-xf>} {<->})
              ]
              negated: F
            )
            (C {<mv>} {($ Id.VSub_DollarName '$ZLIB')} {<zlib>})
          ]
        )
    )
    (command.ShFunction
      name: get_sqlite
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-d>} {($ Id.VSub_DollarName '$BASEDIR') <'/sqlite-amalgamation'>})
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (C {<cd>} {($ Id.VSub_DollarName '$TEMPDIR')})
            (C {($ Id.VSub_DollarName '$HTTP_FETCH')} 
              {<http> <Id.Lit_Colon ':'> <'//www.sqlite.org/'> ($ Id.VSub_DollarName '$SQLITE') <.zip>}
            )
            (C {<cd>} {($ Id.VSub_DollarName '$BASEDIR')})
            (C {<unzip>} {<-q>} 
              {($ Id.VSub_DollarName '$TEMPDIR') <'/'> ($ Id.VSub_DollarName '$SQLITE') <.zip>}
            )
            (C {<mv>} {($ Id.VSub_DollarName '$SQLITE')} {<sqlite-amalgamation>})
          ]
        )
    )
    (command.ShFunction
      name: get_gmock
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-d>} {($ Id.VSub_DollarName '$BASEDIR') <'/gmock-fused'>})
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (C {<cd>} {($ Id.VSub_DollarName '$TEMPDIR')})
            (C {($ Id.VSub_DollarName '$HTTP_FETCH')} 
              {(${ Id.VSub_Name GMOCK_URL) <'/'> (${ Id.VSub_Name GMOCK) <.zip>}
            )
            (C {<cd>} {($ Id.VSub_DollarName '$BASEDIR')})
            (C {<unzip>} {<-q>} 
              {($ Id.VSub_DollarName '$TEMPDIR') <'/'> ($ Id.VSub_DollarName '$GMOCK') <.zip>}
            )
            (C {<mv>} {($ Id.VSub_DollarName '$GMOCK') <'/fused-src'>} {<gmock-fused>})
            (C {<rm>} {<-fr>} {($ Id.VSub_DollarName '$GMOCK')})
          ]
        )
    )
    (command.ShFunction
      name: get_deps
      body: 
        (BraceGroup
          children: [
            (C {<mkdir>} {<-p>} {($ Id.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: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-d>} {($ Id.VSub_DollarName '$i')} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <'Local directory \''> ($ Id.VSub_DollarName '$i') 
                                    <'\' already exists; the downloaded copy won\'t be used'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          spids: [859 870]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ForEach
                      iter_name: target
                      iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName '$target'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <deps>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {<get_> ($ Id.VSub_DollarName '$target')})
                                        (C {<usage>})
                                      ]
                                    )
                                  ]
                                  spids: [922 940]
                                )
                              ]
                              else_action: [(C {<usage>})]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [892 905]
                )
              ]
              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 <'   '> ($ Id.VSub_DollarName '$APACHE_MIRROR') <'/httpd/'> 
                      ($ Id.VSub_DollarName '$HTTPD') <.tar.bz2>
                    )
                  }
                )
                (C {<echo>})
                (C {<echo>} {(DQ <'If you require apr-iconv, its recommended version is:'>)})
                (C {<echo>} 
                  {
                    (DQ <'   '> ($ Id.VSub_DollarName '$APACHE_MIRROR') <'/apr/'> 
                      ($ Id.VSub_DollarName '$APR_ICONV') <.tar.bz2>
                    )
                  }
                )
              ]
            )
            (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$TEMPDIR')})
          ]
        )
    )
    (C {<get_deps>} {(DQ ($ Id.VSub_At '$@'))})
  ]
)