(CommandList
  children: [
    (FuncDef
      name: die
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_At "$@"))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[13])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [8]
        )
      spids: [4 7]
    )
    (FuncDef
      name: xmkdir
      body: 
        (BraceGroup
          children: [
            (While
              cond: [
                (Sentence
                  child: (C {(Lit_Other "[")} {(-n)} {(DQ ($ VSub_Number "$1"))} {(Lit_Other "]")})
                  terminator: <Op_Semi ";">
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      children: [
                        (C {(Lit_Other "[")} {(-d)} {(DQ ($ VSub_Number "$1"))} {(Lit_Other "]")})
                        (AndOr
                          children: [
                            (C {(mkdir)} {(DQ ($ VSub_Number "$1"))})
                            (C {(die)} {(DQ ("Unable to mkdir ") ($ VSub_Number "$1"))})
                          ]
                          op_id: Op_DPipe
                        )
                      ]
                      op_id: Op_DPipe
                    )
                    (C {(shift)})
                  ]
                  spids: [48 82]
                )
            )
          ]
          spids: [32]
        )
      spids: [28 31]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:R) op:Equal rhs:{(DQ ($ VSub_Number "$1"))} spids:[87])]
      spids: [87]
    )
    (AndOr
      children: [
        (C {(Lit_Other "[")} 
          {
            (DQ 
              (CommandSubPart
                command_list: (CommandList children:[(C {(id)} {(-u)})])
                left_token: <Left_CommandSub "$(">
                spids: [96 100]
              )
            )
          } {(-eq)} {(0)} {(Lit_Other "]")}
        )
        (C {(die)} {(DQ ("This script should not be run as root, what if it does rm -rf /?"))})
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (C {(Lit_Other "[")} {(-n)} {(DQ ($ VSub_Name "$R"))} {(Lit_Other "]")})
        (C {(die)} {(DQ ("usage: prepare-chroot.sh <root>"))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(Lit_Other "[")} {(-x)} {(git)} {(Lit_Other "]")})
        (C {(die)} {(DQ ("This script needs to be executed at git source code's top directory"))})
      ]
      op_id: Op_DPipe
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-x)} {(/bin/busybox)} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:BB) op:Equal rhs:{(/bin/busybox)} spids:[165])]
              spids: [165]
            )
          ]
          spids: [-1 162]
        )
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-x)} {(/usr/bin/busybox)} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BB)
                  op: Equal
                  rhs: {(/usr/bin/busybox)}
                  spids: [182]
                )
              ]
              spids: [182]
            )
          ]
          spids: [168 179]
        )
      ]
      else_action: [(C {(die)} {(DQ ("You need busybox"))})]
      spids: [185 194]
    )
    (C {(xmkdir)} {(DQ ($ VSub_Name "$R"))} {(DQ ($ VSub_Name "$R") (/bin))} 
      {(DQ ($ VSub_Name "$R") (/etc))} {(DQ ($ VSub_Name "$R") (/lib))} {(DQ ($ VSub_Name "$R") (/dev))}
    )
    (C {(touch)} {(DQ ($ VSub_Name "$R") (/dev/null))})
    (SimpleCommand
      words: [{(echo)} {(DQ ("root:x:0:0:root:/:/bin/sh"))}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {(DQ ($ VSub_Name "$R") (/etc/passwd))}
          spids: [236]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(echo)}
        {
          (DQ 
            (CommandSubPart
              command_list: (CommandList children:[(C {(id)} {(-nu)})])
              left_token: <Left_CommandSub "$(">
              spids: [246 250]
            ) (":x:") 
            (CommandSubPart
              command_list: (CommandList children:[(C {(id)} {(-u)})])
              left_token: <Left_CommandSub "$(">
              spids: [252 256]
            ) (":") 
            (CommandSubPart
              command_list: (CommandList children:[(C {(id)} {(-g)})])
              left_token: <Left_CommandSub "$(">
              spids: [258 262]
            ) ("::") 
            (CommandSubPart
              command_list: (CommandList children:[(C {(pwd)})])
              left_token: <Left_CommandSub "$(">
              spids: [264 266]
            ) ("/t:/bin/sh")
          )
        }
      ]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {(DQ ($ VSub_Name "$R") (/etc/passwd))}
          spids: [270]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ("root::0:root"))}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {(DQ ($ VSub_Name "$R") (/etc/group))}
          spids: [283]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(echo)}
        {
          (DQ 
            (CommandSubPart
              command_list: (CommandList children:[(C {(id)} {(-ng)})])
              left_token: <Left_CommandSub "$(">
              spids: [293 297]
            ) ("::") 
            (CommandSubPart
              command_list: (CommandList children:[(C {(id)} {(-g)})])
              left_token: <Left_CommandSub "$(">
              spids: [299 303]
            ) (":") 
            (CommandSubPart
              command_list: (CommandList children:[(C {(id)} {(-nu)})])
              left_token: <Left_CommandSub "$(">
              spids: [305 309]
            )
          )
        }
      ]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {(DQ ($ VSub_Name "$R") (/etc/group))}
          spids: [312]
        )
      ]
    )
    (AndOr
      children: [
        (C {(Lit_Other "[")} {(-x)} {(DQ ($ VSub_Name "$R") ($ VSub_Name "$BB"))} {(Lit_Other "]")})
        (C {(cp)} {($ VSub_Name "$BB")} {(DQ ($ VSub_Name "$R") (/bin/busybox))})
      ]
      op_id: Op_DPipe
    )
    (ForEach
      iter_name: cmd
      iter_words: [
        {(sh)}
        {(su)}
        {(ls)}
        {(expr)}
        {(tr)}
        {(basename)}
        {(rm)}
        {(mkdir)}
        {(mv)}
        {(id)}
        {(uname)}
        {(dirname)}
        {(cat)}
        {(true)}
        {(sed)}
        {(diff)}
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (C {(ln)} {(-f)} {(-s)} {(/bin/busybox)} {(DQ ($ VSub_Name "$R") (/bin/) ($ VSub_Name "$cmd"))})
          ]
          spids: [381 398]
        )
      spids: [347 379]
    )
    (C {(mkdir)} {(-p)} 
      {
        (DQ ($ VSub_Name "$R") 
          (CommandSubPart
            command_list: (CommandList children:[(C {(pwd)})])
            left_token: <Left_CommandSub "$(">
            spids: [407 409]
          )
        )
      }
    )
    (C {(rsync)} {(--exclude-from)} {(t/t1509/excludes)} {(-Ha)} {(.)} 
      {
        (DQ ($ VSub_Name "$R") 
          (CommandSubPart
            command_list: (CommandList children:[(C {(pwd)})])
            left_token: <Left_CommandSub "$(">
            spids: [424 426]
          )
        )
      }
    )
    (SimpleCommand
      words: [{(sed)} {(SQ <"s|^PERL_PATH=.*|PERL_PATH=/bin/true|">)} {(GIT-BUILD-OPTIONS)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: 
            {
              (DQ ($ VSub_Name "$R") 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(pwd)})])
                  left_token: <Left_CommandSub "$(">
                  spids: [447 449]
                ) (/GIT-BUILD-OPTIONS)
              )
            }
          spids: [443]
        )
      ]
    )
    (ForEach
      iter_name: cmd
      iter_words: [{(git)} {($ VSub_Name "$BB")}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (Pipeline
              children: [
                (C {(ldd)} {($ VSub_Name "$cmd")})
                (C {(grep)} {(SQ </>)})
                (C {(sed)} {(SQ <"s,.*\\s\\(/[^ ]*\\).*,\\1,">)})
                (While
                  cond: [(Sentence child:(C {(read)} {(i)}) terminator:<Op_Semi ";">)]
                  body: 
                    (DoGroup
                      children: [
                        (C {(mkdir)} {(-p)} 
                          {
                            (DQ ($ VSub_Name "$R") 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(dirname)} {($ VSub_Name "$i")})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [505 509]
                              )
                            )
                          }
                        )
                        (C {(cp)} {(DQ ($ VSub_Name "$i"))} 
                          {(DQ ($ VSub_Name "$R") (/) ($ VSub_Name "$i"))}
                        )
                      ]
                      spids: [496 526]
                    )
                )
              ]
              negated: False
            )
          ]
          spids: [463 528]
        )
      spids: [458 462]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("All is set up in ") ($ VSub_Name "$R") 
                (", execute t1509 with the following commands:\n") ("\n") ("sudo chroot ") ($ VSub_Name "$R") (" /bin/su - ") 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(id)} {(-nu)})])
                  left_token: <Left_CommandSub "$(">
                  spids: [542 546]
                ) ("\n") ("IKNOWWHATIAMDOING=YES ./t1509-root-worktree.sh -v -i\n") ("\n") 
                ("When you are done, simply delete ") ($ VSub_Name "$R") (" to clean up\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [532]
        )
      ]
    )
  ]
)