(CommandList
  children: [
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('  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')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [18]
                )
                (Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[22])
              ]
            )
            (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:[54])]
      spids: [54]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:flags) op:Equal rhs:{(DQ )} spids:[58])]
      spids: [58]
    )
    (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: [89]
                        )
                      ]
                      spids: [89]
                    )
                  ]
                  spids: [85 87 95 16777215]
                )
                (case_arm
                  pat_list: [{(/H)}]
                  action: [(C {(usage)})]
                  spids: [98 100 104 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: [114]
                        )
                      ]
                      spids: [114]
                    )
                  ]
                  spids: [107 112 120 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: [127]
                        )
                      ]
                      spids: [127]
                    )
                  ]
                  spids: [123 125 133 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: [140]
                        )
                      ]
                      spids: [140]
                    )
                  ]
                  spids: [136 138 146 16777215]
                )
                (case_arm
                  pat_list: [{(/P)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:postcmd)
                          op: Equal
                          rhs: {(DQ (more))}
                          spids: [153]
                        )
                      ]
                      spids: [153]
                    )
                  ]
                  spids: [149 151 158 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: [165]
                        )
                      ]
                      spids: [165]
                    )
                  ]
                  spids: [161 163 171 16777215]
                )
                (case_arm pat_list:[{(Lit_Other '*')}] spids:[174 176 16777215 186])
              ]
              spids: [78 82 186]
            )
            (C {(shift)})
          ]
          spids: [75 194]
        )
    )
    (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 217]
        )
      ]
      else_action: [(C {(ls)} {($ VSub_Name '$flags')} {(DQ ($ VSub_At '$@'))})]
      spids: [232 244]
    )
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)