(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'num='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'num='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'num='> name:num)
          op: assign_op.Equal
          rhs: {(DQ <20>)}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <usage>
      name: usage
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Usage: '> 
                    (CommandSub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (command.Simple
                          blame_tok: <basename>
                          more_env: []
                          words: [{<basename>} {($ Id.VSub_Number 0)}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Backtick_Right '`'>
                    ) <' [-nr] [-na] [-n#] [-s] [-r] [path...]'>
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'    -nr    do not recurse'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'    -na    ignore files starting with .'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'    -n#    list the newest # files ('> ($ Id.VSub_DollarName num) 
                    <' by default)'>
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'    -r     reverse to show oldest files'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'num='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'num='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'num='> name:num)
          op: assign_op.Equal
          rhs: {(DQ <-n> ($ Id.VSub_DollarName num))}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'dotfiles='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'dotfiles='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dotfiles='> name:dotfiles)
          op: assign_op.Equal
          rhs: {(DQ <yes>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'recurse='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'recurse='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'recurse='> name:recurse)
          op: assign_op.Equal
          rhs: {(DQ <yes>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'reverse='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'reverse='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reverse='> name:reverse)
          op: assign_op.Equal
          rhs: {(DQ )}
        )
      ]
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [{<Id.Lit_Colon ':'>}]
              redirects: []
              do_fork: T
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <-->
                  pattern: (pat.Words words:[{<-->}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Break break>)
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-na>
                  pattern: (pat.Words words:[{<-na>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'dotfiles='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'dotfiles='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dotfiles='> name:dotfiles)
                          op: assign_op.Equal
                          rhs: {(DQ <no>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-nr>
                  pattern: (pat.Words words:[{<-nr>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'recurse='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'recurse='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'recurse='> name:recurse)
                          op: assign_op.Equal
                          rhs: {(DQ <no>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-n>
                  pattern: 
                    (pat.Words
                      words: [
                        {<-n> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'num='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'num='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'num='> name:num)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-r>
                  pattern: (pat.Words words:[{<-r>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'reverse='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'reverse='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reverse='> name:reverse)
                          op: assign_op.Equal
                          rhs: {(DQ <r>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--help>
                  pattern: (pat.Words words:[{<--help>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <usage>
                      more_env: []
                      words: [{<usage>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--version>
                  pattern: (pat.Words words:[{<--version>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <1.1>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Exit exit>
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [
            {<Id.Lit_LBracket '['>}
            {(DQ ($ Id.VSub_DollarName dotfiles))}
            {<Id.Lit_Equals '='>}
            {(DQ <no>)}
            {<Id.Lit_RBracket ']'>}
          ]
          redirects: []
          do_fork: T
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'ignore_hidden='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'ignore_hidden='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ignore_hidden='> name:ignore_hidden)
              op: assign_op.Equal
              rhs: {(DQ <'-name \'.*\' -o'>)}
            )
          ]
          redirects: []
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [
            {<Id.Lit_LBracket '['>}
            {(DQ ($ Id.VSub_DollarName recurse))}
            {<Id.Lit_Equals '='>}
            {(DQ <no>)}
            {<Id.Lit_RBracket ']'>}
          ]
          redirects: []
          do_fork: T
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'dont_recurse='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'dont_recurse='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dont_recurse='> name:dont_recurse)
              op: assign_op.Equal
              rhs: {(DQ <'-maxdepth 1'>)}
            )
          ]
          redirects: []
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_Pound '#')}
                        {<-gt>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'path_format='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'path_format='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'path_format='> name:path_format)
                  op: assign_op.Equal
                  rhs: {(DQ <'%p'>)}
                )
              ]
              redirects: []
            )
          ]
          spids: [320 333]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'path_format='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'path_format='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'path_format='> name:path_format)
              op: assign_op.Equal
              rhs: {(DQ <'%P'>)}
            )
          ]
          redirects: []
        )
        (command.Simple
          blame_tok: <set>
          more_env: []
          words: [{<set>} {<-->} {(DQ <'./'>)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ignore_metadata='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ignore_metadata='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ignore_metadata='> name:ignore_metadata)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <Id.Lit_BadBackslash '\\'> <'( -type d -a '> <Id.Lit_BadBackslash '\\'> 
                <'( -name \'.git\' -o -name \'.svn\' -o -name \'CVS\' '> <Id.Lit_BadBackslash '\\'> <') '> <Id.Lit_BadBackslash '\\'> <') -prune -o'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'print_format='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'print_format='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'print_format='> name:print_format)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <Id.Lit_BadBackslash '\\'> <'( -type f -printf \'%T@'> <Id.Lit_BadBackslash '\\'> <t> 
                ($ Id.VSub_DollarName path_format) <Id.Lit_BadBackslash '\\'> <'n\' '> <Id.Lit_BadBackslash '\\'> <')'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <eval>
          more_env: []
          words: [
            {<eval>}
            {<find>}
            {(SQ <'"$@"'>)}
            {($ Id.VSub_DollarName dont_recurse)}
            {($ Id.VSub_DollarName ignore_metadata)}
            {($ Id.VSub_DollarName ignore_hidden)}
            {($ Id.VSub_DollarName print_format)}
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <sort>
          more_env: []
          words: [{<sort>} {<-k1> <Id.Lit_Comma ','> <1> (${ Id.VSub_Name reverse) <n>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <tail>
          more_env: []
          words: [{<tail>} {($ Id.VSub_DollarName num)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <cut>
          more_env: []
          words: [{<cut>} {<-f2->}]
          redirects: []
          do_fork: T
        )
        (command.If
          if_kw: <Id.KW_If if>
          arms: [
            (IfArm
              keyword: <Id.KW_If if>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {<Id.KW_Bang '!'>}
                            {<-p>}
                            {<'/proc/self/fd/1'>}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              then_kw: <Id.KW_Then then>
              action: [
                (command.Pipeline
                  children: [
                    (command.Simple
                      blame_tok: <tr>
                      more_env: []
                      words: [{<tr>} {(SQ <'\\n'>)} {(SQ <'\\0'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <xargs>
                      more_env: []
                      words: [
                        {<xargs>}
                        {<-r0>}
                        {<ls>}
                        {<-lUd>}
                        {<--color> <Id.Lit_Equals '='> <auto>}
                        {<-->}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_Pipe _>]
                )
              ]
              spids: [428 441]
            )
          ]
          else_kw: <Id.KW_Else else>
          else_action: [
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: []
              do_fork: T
            )
          ]
          fi_kw: <Id.KW_Fi fi>
          redirects: []
        )
      ]
      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
    )
  ]
)