(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OPTIONS_KEEPDASHDASH)
          op: Equal
          rhs: {(EmptyPart)}
          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:{(EmptyPart)} spids:[44])]
      spids: [44]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:ignoredonly) op:Equal rhs:{(EmptyPart)} spids:[46])]
      spids: [46]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:cleandir) op:Equal rhs:{(EmptyPart)} 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]
    )
    (WhileUntil
      keyword: <KW_While 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 16777215]
                )
                (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 16777215]
                )
                (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 16777215]
                )
                (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 16777215]
                )
                (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 16777215]
                )
                (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 16777215]
                )
                (case_arm
                  pat_list: [{(--)}]
                  action: [(C {(shift)}) (ControlFlow token:<ControlFlow_Break break>)]
                  spids: [198 199 208 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(usage)})]
                  spids: [211 212 221 16777215]
                )
              ]
              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: [249 251 261 16777215]
        )
        (case_arm
          pat_list: [{(DQ (true))}]
          action: [
            (C {(die)} {(DQ ('clean.requireForce set and -n or -f not given; refusing to clean'))})
          ]
          spids: [263 266 276 16777215]
        )
      ]
      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: [16777215 300]
        )
      ]
      spids: [16777215 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: {(EmptyPart)}
                  spids: [334]
                )
                (assign_pair
                  lhs: (LhsName name:excludes_file)
                  op: Equal
                  rhs: {(EmptyPart)}
                  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: [16777215 353]
                )
              ]
              spids: [16777215 364]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (AndOr
                      ops: [Op_DAmp]
                      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'))})
                      ]
                    )
                  ]
                  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: [16777215 389]
                )
              ]
              spids: [16777215 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: [16777215 413]
                )
              ]
              spids: [16777215 423]
            )
          ]
          spids: [16777215 325]
        )
      ]
      spids: [16777215 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 '$@'))}
        )
        (WhileUntil
          keyword: <KW_While 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: [16777215 517]
                            )
                          ]
                          spids: [16777215 530]
                        )
                        (C {($ VSub_Name '$echo1')} {(DQ ('Removing ') ($ VSub_Name '$file'))})
                        (C {($ VSub_Name '$rmrf')} {(DQ ($ VSub_Name '$file'))})
                      ]
                      spids: [16777215 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: F
    )
  ]
)