(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OPTIONS_KEEPDASHDASH) op:Equal rhs:{(SQ )} spids:[13])]
      spids: [13]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OPTIONS_SPEC)
          op: Equal
          rhs: 
            {
              (DQ ("git-clean [options] <paths>...\n") ("\n") 
                ("Clean untracked files from the working directory\n") ("\n") ("When optional <paths>... arguments are given, the paths\n") 
                ("affected are further limited to those that match them.\n") ("--\n") ("d remove directories as well\n") ("f override clean.requireForce and clean anyway\n") 
                ("n don't remove anything, just show what would be done\n") ("q be quiet, only report errors\n") ("x remove ignored files as well\n") 
                ("X remove only ignored files")
              )
            }
          spids: [15]
        )
      ]
      spids: [15]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:SUBDIRECTORY_OK) op:Equal rhs:{(Yes)} spids:[34])]
      spids: [34]
    )
    (C {(.)} {(git-sh-setup)})
    (C {(require_work_tree)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:ignored) op:Equal rhs:{(SQ )} spids:[44])]
      spids: [44]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:ignoredonly) op:Equal rhs:{(SQ )} spids:[46])]
      spids: [46]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:cleandir) op:Equal rhs:{(SQ )} spids:[48])]
      spids: [48]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:rmf) op:Equal rhs:{(DQ ("rm -f --"))} spids:[50])]
      spids: [50]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:rmrf) op:Equal rhs:{(DQ ("rm -rf --"))} spids:[55])]
      spids: [55]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:rm_refuse)
          op: Equal
          rhs: {(DQ ("echo Not removing"))}
          spids: [60]
        )
      ]
      spids: [60]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:echo1) op:Equal rhs:{(DQ (echo))} spids:[65])]
      spids: [65]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:disabled)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(git)} {(config)} {(--bool)} {(clean.requireForce)})]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [72 80]
              )
            }
          spids: [71]
        )
      ]
      spids: [71]
    )
    (While
      cond: [(C {(test)} {($ VSub_Pound "$#")} {(KW_Bang "!") (Lit_Other "=")} {(0)})]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Number "$1"))}
              arms: [
                (case_arm
                  pat_list: [{(-d)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cleandir)
                          op: Equal
                          rhs: {(1)}
                          spids: [110]
                        )
                      ]
                      spids: [110]
                    )
                  ]
                  spids: [106 107 114 -1]
                )
                (case_arm
                  pat_list: [{(-f)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:disabled)
                          op: Equal
                          rhs: {(false)}
                          spids: [121]
                        )
                      ]
                      spids: [121]
                    )
                  ]
                  spids: [117 118 125 -1]
                )
                (case_arm
                  pat_list: [{(-n)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:disabled)
                          op: Equal
                          rhs: {(false)}
                          spids: [132]
                        )
                      ]
                      spids: [132]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rmf)
                          op: Equal
                          rhs: {(DQ ("echo Would remove"))}
                          spids: [136]
                        )
                      ]
                      spids: [136]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rmrf)
                          op: Equal
                          rhs: {(DQ ("echo Would remove"))}
                          spids: [142]
                        )
                      ]
                      spids: [142]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rm_refuse)
                          op: Equal
                          rhs: {(DQ ("echo Would not remove"))}
                          spids: [148]
                        )
                      ]
                      spids: [148]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:echo1)
                          op: Equal
                          rhs: {(DQ (":"))}
                          spids: [154]
                        )
                      ]
                      spids: [154]
                    )
                  ]
                  spids: [128 129 160 -1]
                )
                (case_arm
                  pat_list: [{(-q)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:echo1)
                          op: Equal
                          rhs: {(DQ (":"))}
                          spids: [167]
                        )
                      ]
                      spids: [167]
                    )
                  ]
                  spids: [163 164 173 -1]
                )
                (case_arm
                  pat_list: [{(-x)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:ignored) op:Equal rhs:{(1)} spids:[180])]
                      spids: [180]
                    )
                  ]
                  spids: [176 177 184 -1]
                )
                (case_arm
                  pat_list: [{(-X)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ignoredonly)
                          op: Equal
                          rhs: {(1)}
                          spids: [191]
                        )
                      ]
                      spids: [191]
                    )
                  ]
                  spids: [187 188 195 -1]
                )
                (case_arm
                  pat_list: [{(--)}]
                  action: [(C {(shift)}) (ControlFlow token:<ControlFlow_Break break>)]
                  spids: [198 199 208 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [(C {(usage)})]
                  spids: [211 212 221 -1]
                )
              ]
              spids: [97 103 224]
            )
            (C {(shift)})
          ]
          spids: [94 229]
        )
    )
    (Case
      to_match: {(DQ ($ VSub_Name "$disabled"))}
      arms: [
        (case_arm
          pat_list: [{(DQ )}]
          action: [
            (C {(die)} {(DQ ("clean.requireForce not set and -n or -f not given; refusing to clean"))})
          ]
          spids: [-1 251 261 -1]
        )
        (case_arm
          pat_list: [{(DQ (true))}]
          action: [
            (C {(die)} {(DQ ("clean.requireForce set and -n or -f not given; refusing to clean"))})
          ]
          spids: [264 266 276 -1]
        )
      ]
      spids: [241 247 278]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$ignored") (",") ($ VSub_Name "$ignoredonly"))} 
                  {(Lit_Other "=")} {(DQ ("1,1"))} {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(die)} {(DQ ("-x and -X cannot be set together"))})]
          spids: [-1 300]
        )
      ]
      spids: [-1 309]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$ignored"))} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:excl)
                  op: Equal
                  rhs: {(DQ ("--exclude-per-directory=.gitignore"))}
                  spids: [328]
                )
              ]
              spids: [328]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:excl_info)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [334]
                )
                (assign_pair
                  lhs: (LhsName name:excludes_file)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [336]
                )
              ]
              spids: [334]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(-f)} {(DQ ($ VSub_Name "$GIT_DIR") (/info/exclude))} 
                          {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:excl_info)
                          op: Equal
                          rhs: {(DQ ("--exclude-from=") ($ VSub_Name "$GIT_DIR") (/info/exclude))}
                          spids: [356]
                        )
                      ]
                      spids: [356]
                    )
                  ]
                  spids: [-1 353]
                )
              ]
              spids: [-1 364]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cfg_excl)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [(C {(git)} {(config)} {(core.excludesfile)})]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [370 376]
                                  )
                                }
                              spids: [369]
                            )
                          ]
                          spids: [369]
                        )
                        (C {(test)} {(-f)} {(DQ ($ VSub_Name "$cfg_excl"))})
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:excludes_file)
                          op: Equal
                          rhs: {(DQ ("--exclude-from=") ($ VSub_Name "$cfg_excl"))}
                          spids: [392]
                        )
                      ]
                      spids: [392]
                    )
                  ]
                  spids: [-1 389]
                )
              ]
              spids: [-1 399]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$ignoredonly"))} {(Lit_Other "]")})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:excl)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name "$excl") (" --ignored"))}
                          spids: [416]
                        )
                      ]
                      spids: [416]
                    )
                  ]
                  spids: [-1 413]
                )
              ]
              spids: [-1 423]
            )
          ]
          spids: [-1 325]
        )
      ]
      spids: [-1 425]
    )
    (Pipeline
      children: [
        (C {(git)} {(ls-files)} {(--others)} {(--directory)} {($ VSub_Name "$excl")} 
          {
            (BracedVarSub
              token: <VSub_Name excl_info>
              suffix_op: (StringUnary op_id:VTest_ColonPlus arg_word:{(DQ ($ VSub_Name "$excl_info"))})
              spids: [440 446]
            )
          } 
          {
            (BracedVarSub
              token: <VSub_Name excludes_file>
              suffix_op: 
                (StringUnary
                  op_id: VTest_ColonPlus
                  arg_word: {(DQ ($ VSub_Name "$excludes_file"))}
                )
              spids: [448 454]
            )
          } {(--)} {(DQ ($ VSub_At "$@"))}
        )
        (While
          cond: [(Sentence child:(C {(read)} {(-r)} {(file)}) terminator:<Op_Semi ";">)]
          body: 
            (DoGroup
              children: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other "[")} {(-d)} {(DQ ($ VSub_Name "$file"))} {(-a)} 
                              {(KW_Bang "!")} {(-L)} {(DQ ($ VSub_Name "$file"))} {(Lit_Other "]")}
                            )
                          terminator: <Op_Semi ";">
                        )
                      ]
                      action: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$cleandir"))} 
                                      {(Lit_Other "]")}
                                    )
                                  terminator: <Op_Semi ";">
                                )
                              ]
                              action: [
                                (C {($ VSub_Name "$rm_refuse")} {(DQ ($ VSub_Name "$file"))})
                                (ControlFlow
                                  token: <ControlFlow_Continue continue>
                                )
                              ]
                              spids: [-1 517]
                            )
                          ]
                          spids: [-1 530]
                        )
                        (C {($ VSub_Name "$echo1")} {(DQ ("Removing ") ($ VSub_Name "$file"))})
                        (C {($ VSub_Name "$rmrf")} {(DQ ($ VSub_Name "$file"))})
                      ]
                      spids: [-1 501]
                    )
                  ]
                  else_action: [
                    (C {($ VSub_Name "$echo1")} {(DQ ("Removing ") ($ VSub_Name "$file"))})
                    (C {($ VSub_Name "$rmf")} {(DQ ($ VSub_Name "$file"))})
                  ]
                  spids: [548 566]
                )
              ]
              spids: [475 568]
            )
        )
      ]
      negated: False
    )
  ]
)