(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-e)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-z)} {(DQ ($ Id.VSub_At '$@'))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:32)
            )
          ]
          action: [
            (command.ForEach
              iter_name: argument
              iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$argument')}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ (-s))}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:curlopts)
                                  op: assign_op.Equal
                                  rhs: {(DQ (-s))}
                                  spids: [68]
                                )
                              ]
                            )
                          ]
                          spids: [62 65 74 -1]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
          spids: [19 34]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(Id.KW_Bang '!')} {(-f)} {(src/google/protobuf/stubs/common.h)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:98)
            )
          ]
          action: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:105)
                  fd: -1
                  arg_word: {(2)}
                )
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:108)
                  fd: -1
                  here_begin: {(__EOF__)}
                  here_end_span_id: 115
                  stdin_parts: [
                    (
'Could not find source code.  Make sure you are running this script from the\n'
                    )
                    ('root of the distribution tree.\n')
                  ]
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:117)
              arg_word: {(1)}
            )
          ]
          spids: [89 100]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(Id.KW_Bang '!')} {(-e)} {(gmock)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:139)
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Google Mock not present.  Fetching gmock-1.7.0 from the web...'))})
            (C {(curl)} {($ Id.VSub_DollarName '$curlopts')} {(-L)} {(-O)} 
              {(https) (Id.Lit_Other ':') (//github.com/google/googlemock/archive/release-1.7.0.zip)}
            )
            (C {(unzip)} {(-q)} {(release-1.7.0.zip)})
            (C {(rm)} {(release-1.7.0.zip)})
            (C {(mv)} {(googlemock-release-1.7.0)} {(gmock)})
            (C {(curl)} {($ Id.VSub_DollarName '$curlopts')} {(-L)} {(-O)} 
              {(https) (Id.Lit_Other ':') (//github.com/google/googletest/archive/release-1.7.0.zip)}
            )
            (C {(unzip)} {(-q)} {(release-1.7.0.zip)})
            (C {(rm)} {(release-1.7.0.zip)})
            (C {(mv)} {(googletest-release-1.7.0)} {(gmock/gtest)})
          ]
          spids: [130 141]
        )
      ]
    )
    (C {(Id.KW_Set set)} {(-ex)})
    (C {(autoreconf)} {(-f)} {(-i)} {(-Wall) (Id.Lit_Comma ',') (no-obsolete)})
    (C {(rm)} {(-rf)} {(autom4te.cache)} {(config.h.in) (Id.Lit_TildeLike '~')})
    (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:246) arg_word:{(0)})
  ]
)