(CommandList
  children: [
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 39
                  stdin_parts: [
                    ('  Usage: ')
                    ($ VSub_Number '$0')
                    (' [DOS flags] directory or directories\n')
                    ('  Where:\n')
                    ('   /D           sort by columns\n')
                    ('   /H           show help for this shell script\n')
                    ('   /N           show long listing format with filenames on right\n')
                    ('   /OD          sort by oldest to newest\n')
                    ('   /O-D         sort by newest to oldest\n')
                    ('   /P           pause after each screenful of information\n')
                    ('   /Q           show owner of the file\n')
                    ('   /S           recursive listing\n')
                    ('   /W           use wide listing format\n')
                  ]
                )
                (Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})
              ]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [14]
        )
      spids: [10 13]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:postcmd) op:Equal rhs:{(DQ )} spids:[55])]
      spids: [55]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:flags) op:Equal rhs:{(DQ )} spids:[59])]
      spids: [59]
    )
    (WhileUntil
      keyword: <KW_While while>
      cond: [(C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')})]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{(/D)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:flags)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$flags') (' -x'))}
                          spids: [90]
                        )
                      ]
                      spids: [90]
                    )
                  ]
                  spids: [86 88 96 16777215]
                )
                (case_arm
                  pat_list: [{(/H)}]
                  action: [(C {(usage)})]
                  spids: [99 101 105 16777215]
                )
                (case_arm
                  pat_list: [{(/) (Lit_Other '[') (NQW) (Lit_Other ']')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:flags)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$flags') (' -l'))}
                          spids: [115]
                        )
                      ]
                      spids: [115]
                    )
                  ]
                  spids: [108 113 121 16777215]
                )
                (case_arm
                  pat_list: [{(/OD)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:flags)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$flags') (' -rt'))}
                          spids: [128]
                        )
                      ]
                      spids: [128]
                    )
                  ]
                  spids: [124 126 134 16777215]
                )
                (case_arm
                  pat_list: [{(/O-D)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:flags)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$flags') (' -t'))}
                          spids: [141]
                        )
                      ]
                      spids: [141]
                    )
                  ]
                  spids: [137 139 147 16777215]
                )
                (case_arm
                  pat_list: [{(/P)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:postcmd)
                          op: Equal
                          rhs: {(DQ (more))}
                          spids: [154]
                        )
                      ]
                      spids: [154]
                    )
                  ]
                  spids: [150 152 159 16777215]
                )
                (case_arm
                  pat_list: [{(/S)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:flags)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$flags') (' -s'))}
                          spids: [166]
                        )
                      ]
                      spids: [166]
                    )
                  ]
                  spids: [162 164 172 16777215]
                )
                (case_arm pat_list:[{(Lit_Other '*')}] spids:[175 177 16777215 187])
              ]
              spids: [79 83 187]
            )
            (C {(shift)})
          ]
          spids: [76 195]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$postcmd'))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Pipeline
              children: [
                (C {(ls)} {($ VSub_Name '$flags')} {(DQ ($ VSub_At '$@'))})
                (C {($ VSub_Name '$postcmd')})
              ]
              negated: F
            )
          ]
          spids: [16777215 218]
        )
      ]
      else_action: [(C {(ls)} {($ VSub_Name '$flags')} {(DQ ($ VSub_At '$@'))})]
      spids: [233 245]
    )
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)