(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:num) op:Equal rhs:{(DQ (20))} spids:[60])]
      spids: [60]
    )
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ("Usage: ") 
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(basename)} {($ VSub_Number "$0")})])
                      left_token: <Left_Backtick "`">
                      spids: [77 81]
                    ) (" [-nr] [-na] [-n#] [-s] [-r] [path...]")
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[85])]
            )
            (SimpleCommand
              words: [{(echo)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[91])]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ ("    -nr    do not recurse"))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[101])]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ ("    -na    ignore files starting with ."))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[111])]
            )
            (SimpleCommand
              words: [
                {(echo)}
                {(DQ ("    -n#    list the newest # files (") ($ VSub_Name "$num") (" by default)"))}
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[123])]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ ("    -r     reverse to show oldest files"))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[133])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [70]
        )
      spids: [66 69]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:num)
          op: Equal
          rhs: {(DQ (-n) ($ VSub_Name "$num"))}
          spids: [144]
        )
      ]
      spids: [144]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:dotfiles) op:Equal rhs:{(DQ (yes))} spids:[150])]
      spids: [150]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:recurse) op:Equal rhs:{(DQ (yes))} spids:[155])]
      spids: [155]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:reverse) op:Equal rhs:{(DQ )} spids:[160])]
      spids: [160]
    )
    (While
      cond: [(C {(Lit_Other ":")})]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Number "$1"))}
              arms: [
                (case_arm
                  pat_list: [{(--)}]
                  action: [
                    (Sentence child:(C {(shift)}) terminator:<Op_Semi ";">)
                    (ControlFlow token:<ControlFlow_Break break>)
                  ]
                  spids: [180 181 188 -1]
                )
                (case_arm
                  pat_list: [{(-na)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dotfiles)
                          op: Equal
                          rhs: {(DQ (no))}
                          spids: [194]
                        )
                      ]
                      spids: [194]
                    )
                  ]
                  spids: [191 192 199 -1]
                )
                (case_arm
                  pat_list: [{(-nr)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:recurse)
                          op: Equal
                          rhs: {(DQ (no))}
                          spids: [205]
                        )
                      ]
                      spids: [205]
                    )
                  ]
                  spids: [202 203 210 -1]
                )
                (case_arm
                  pat_list: [{(-n) (Lit_Other "[") (0-9) (Lit_Other "]") (Lit_Other "*")}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:num)
                          op: Equal
                          rhs: {($ VSub_Number "$1")}
                          spids: [220]
                        )
                      ]
                      spids: [220]
                    )
                  ]
                  spids: [213 218 223 -1]
                )
                (case_arm
                  pat_list: [{(-r)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:reverse)
                          op: Equal
                          rhs: {(DQ (r))}
                          spids: [229]
                        )
                      ]
                      spids: [229]
                    )
                  ]
                  spids: [226 227 234 -1]
                )
                (case_arm
                  pat_list: [{(--help)}]
                  action: [(C {(usage)})]
                  spids: [237 238 242 -1]
                )
                (case_arm
                  pat_list: [{(--version)}]
                  action: [(AndOr children:[(C {(echo)} {(DQ (1.1))})(C {(exit)})] op_id:Op_DAmp)]
                  spids: [245 246 258 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                  spids: [261 262 266 -1]
                )
              ]
              spids: [171 177 269]
            )
            (C {(shift)})
          ]
          spids: [168 274]
        )
    )
    (AndOr
      children: [
        (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$dotfiles"))} {(Lit_Other "=")} {(DQ (no))} 
          {(Lit_Other "]")}
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:ignore_hidden)
              op: Equal
              rhs: {(DQ ("-name '.*' -o"))}
              spids: [292]
            )
          ]
          spids: [292]
        )
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$recurse"))} {(Lit_Other "=")} {(DQ (no))} 
          {(Lit_Other "]")}
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:dont_recurse)
              op: Equal
              rhs: {(DQ ("-maxdepth 1"))}
              spids: [313]
            )
          ]
          spids: [313]
        )
      ]
      op_id: Op_DAmp
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {($ VSub_Pound "$#")} {(-gt)} {(0)} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:path_format)
                  op: Equal
                  rhs: {(DQ ("%p"))}
                  spids: [334]
                )
              ]
              spids: [334]
            )
          ]
          spids: [-1 331]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:path_format) op:Equal rhs:{(DQ ("%P"))} spids:[342])]
          spids: [342]
        )
        (C {(set)} {(--)} {(DQ (./))})
      ]
      spids: [339 356]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ignore_metadata)
          op: Equal
          rhs: 
            {
              (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\(">) (" -type d -a ") 
                (EscapedLiteralPart token:<Lit_EscapedChar "\\(">) (" -name '.git' -o -name '.svn' -o -name 'CVS' ") (EscapedLiteralPart token:<Lit_EscapedChar "\\)">) 
                (" ") (EscapedLiteralPart token:<Lit_EscapedChar "\\)">) (" -prune -o")
              )
            }
          spids: [359]
        )
      ]
      spids: [359]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:print_format)
          op: Equal
          rhs: 
            {
              (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\(">) (" -type f -printf '%T@") 
                (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) ($ VSub_Name "$path_format") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) ("' ") 
                (EscapedLiteralPart token:<Lit_EscapedChar "\\)">)
              )
            }
          spids: [371]
        )
      ]
      spids: [371]
    )
    (Pipeline
      children: [
        (C {(eval)} {(find)} {(SQ <"\"$@\"">)} {($ VSub_Name "$dont_recurse")} 
          {($ VSub_Name "$ignore_metadata")} {($ VSub_Name "$ignore_hidden")} {($ VSub_Name "$print_format")}
        )
        (C {(sort)} {(-k1) (Lit_Comma ",") (1) (${ VSub_Name reverse) (n)})
        (C {(tail)} {($ VSub_Name "$num")})
        (C {(cut)} {(-f2-)})
        (If
          arms: [
            (if_arm
              cond: [
                (Sentence
                  child: 
                    (C {(Lit_Other "[")} {(KW_Bang "!")} {(-p)} {(/proc/self/fd/1)} {(Lit_Other "]")})
                  terminator: <Op_Semi ";">
                )
              ]
              action: [
                (Pipeline
                  children: [
                    (C {(tr)} {(SQ <"\\n">)} {(SQ <"\\0">)})
                    (C {(xargs)} {(-r0)} {(ls)} {(-lUd)} {(--color) (Lit_Other "=") (auto)} {(--)})
                  ]
                  negated: False
                )
              ]
              spids: [-1 437]
            )
          ]
          else_action: [(C {(cat)})]
          spids: [467 472]
        )
      ]
      negated: False
    )
  ]
)