(command.CommandList
  children: [
    (command.ShFunction
      name: usage
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:USAGE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ('Usage: ') ($ Id.VSub_Number '$0') 
                        (' i386|amd64 [target dir] [be|dev|<stable version>]]') (Id.Lit_Other '\\') ('n\n') (Id.Lit_Other '\\') ('n\n') 
                        ('The first mandatory argument speciifies the CPU architecture using') (Id.Lit_Other '\\') ('n\n') ('the Debian convention (e.g. i386 and amd64).') (Id.Lit_Other '\\') ('n\n') 
                        (Id.Lit_Other '\\') ('n\n') ('The second optional argument specifies the destination') (Id.Lit_Other '\\') ('n\n') 
                        ("directory. This defaults to 'debian_<architecture>'.") (Id.Lit_Other '\\') ('n\n') (Id.Lit_Other '\\') ('n\n') 
                        ('The third optional argument specifies whether the chroot is') (Id.Lit_Other '\\') ('n\n') ("populated with a Dart checkout. Use 'be' for bleeding edge, 'dev'") 
                        (Id.Lit_Other '\\') ('n\n') ('for trunk/developer or the specific version number for a stable') (Id.Lit_Other '\\') ('n\n') 
                        ('version (e.g. 1.2).')
                      )
                    }
                  spids: [35]
                )
              ]
            )
            (C {(echo)} {(-e)} {($ Id.VSub_DollarName '$USAGE')})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:81)
              arg_word: {(1)}
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-lt)} {(1)} {(Id.Lit_RBracket ']')})
                (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-gt)} {(3)} {(Id.Lit_RBracket ']')})
              ]
            )
          ]
          action: [(C {(usage)})]
          spids: [94 118]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ARCH)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [126]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_Number '$2'))} {(Id.Lit_RBracket ']')})
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHROOT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [145]
                )
              ]
            )
          ]
          spids: [130 142]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:CHROOT)
              op: assign_op.Equal
              rhs: {(debian_) ($ Id.VSub_DollarName '$ARCH')}
              spids: [151]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_Number '$3'))} {(Id.Lit_RBracket ']')})
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHANNEL)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$3')}
                  spids: [173]
                )
              ]
            )
          ]
          spids: [158 170]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                  {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (i386))} {(Id.Lit_RBracket ']')}
                )
                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                  {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (amd64))} {(Id.Lit_RBracket ']')}
                )
              ]
            )
          ]
          action: [(C {(usage)})]
          spids: [179 213]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SVN_REPRO)
          op: assign_op.Equal
          rhs: {(DQ ('http://dart.googlecode.com/svn/'))}
          spids: [221]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$CHANNEL'))} 
              {(Id.Lit_RBracket ']')}
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$CHANNEL'))} 
                      {(Id.Lit_Equals '=') (Id.Lit_Equals '=')} {(DQ (be))} {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SVN_PATH)
                          op: assign_op.Equal
                          rhs: {(DQ (branches/bleeding_edge/deps/all.deps))}
                          spids: [262]
                        )
                      ]
                    )
                  ]
                  spids: [241 259]
                )
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$CHANNEL'))} 
                      {(Id.Lit_Equals '=') (Id.Lit_Equals '=')} {(DQ (dev))} {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SVN_PATH)
                          op: assign_op.Equal
                          rhs: {(DQ (trunk/deps/all.deps))}
                          spids: [289]
                        )
                      ]
                    )
                  ]
                  spids: [268 286]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:SVN_PATH)
                      op: assign_op.Equal
                      rhs: {(DQ (branches/) ($ Id.VSub_DollarName '$CHANNEL') (/deps/all.deps))}
                      spids: [298]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SRC_URI)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$SVN_REPRO') ($ Id.VSub_DollarName '$SVN_PATH')}
                  spids: [309]
                )
              ]
            )
          ]
          spids: [226 238]
        )
      ]
    )
    (C {(debootstrap)} {(--arch) (Id.Lit_Equals '=') ($ Id.VSub_DollarName '$ARCH')} 
      {(--components) (Id.Lit_Equals '=') (main) (Id.Lit_Comma ',') (restricted) (Id.Lit_Comma ',') 
        (universe) (Id.Lit_Comma ',') (multiverse)
      } {(wheezy)} {($ Id.VSub_DollarName '$CHROOT')} {(http) (Id.Lit_Other ':') (//http.us.debian.org/debian/)}
    )
    (C {(chroot)} {($ Id.VSub_DollarName '$CHROOT')} {(apt-get)} {(update)})
    (C {(chroot)} {($ Id.VSub_DollarName '$CHROOT')} {(apt-get)} {(-y)} {(install)} {(debhelper)} {(python)} 
      {(git)} {(gcc)} {(sudo)} {(make)}
    )
    (C {(chroot)} {($ Id.VSub_DollarName '$CHROOT')} {(groupadd)} {(--gid)} {(1001)} {(chrome-bot)})
    (C {(chroot)} {($ Id.VSub_DollarName '$CHROOT')} {(useradd)} {(--gid)} {(1001)} {(--uid)} {(1001)} 
      {(--create-home)} {(chrome-bot)}
    )
    (C {(mkdir)} {($ Id.VSub_DollarName '$CHROOT') (/b)})
    (C {(chown)} {(1001) (Id.Lit_Other ':') (1001)} {($ Id.VSub_DollarName '$CHROOT') (/b)})
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:431)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 443
          stdin_parts: [('#!/bin/sh\n') ('su -c /b/init_chroot.sh chrome-bot\n')]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:435)
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$CHROOT') (/b/init_chroot_trampoline.sh)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:450)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:453))}
          here_end_span_id: 463
          stdin_parts: [('#!/bin/sh\n') ('cd /b\n')]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:456)
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$CHROOT') (/b/init_chroot.sh)}
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$SRC_URI'))} 
              {(Id.Lit_RBracket ']')}
            )
          ]
          action: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:490)
                  fd: -1
                  here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:493))}
                  here_end_span_id: 503
                  stdin_parts: [
                    ('git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git\n')
                    ('export PATH=$PATH:/b/depot_tools\n')
                  ]
                )
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:496)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$CHROOT') (/b/init_chroot.sh)}
                )
              ]
            )
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:507)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 522
                  stdin_parts: [
                    ('gclient config ')
                    ($ Id.VSub_DollarName '$SRC_URI')
                    ('\n')
                    ('gclient sync\n')
                    ('gclient runhooks\n')
                  ]
                )
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:511)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$CHROOT') (/b/init_chroot.sh)}
                )
              ]
            )
          ]
          spids: [474 486]
        )
      ]
    )
    (C {(chmod)} {(755)} {($ Id.VSub_DollarName '$CHROOT') (/b/init_chroot_trampoline.sh)})
    (C {(chown)} {(1001) (Id.Lit_Other ':') (1001)} 
      {($ Id.VSub_DollarName '$CHROOT') (/b/init_chroot.sh)}
    )
    (C {(chmod)} {(755)} {($ Id.VSub_DollarName '$CHROOT') (/b/init_chroot.sh)})
    (C {(chroot)} {($ Id.VSub_DollarName '$CHROOT')} {(/bin/sh)} {(/b/init_chroot_trampoline.sh)})
  ]
)