(CommandList
  children: [
    (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: [24 28]
                    ) (' mon|tue|... [next]|week|last')
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[32])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [17]
        )
      spids: [12 16]
    )
    (AndOr
      children: [
        (C {(Lit_Other '[')} {(DQ ($ VSub_Pound '$#'))} {(-eq)} {(DQ (0))} {(Lit_Other ']')})
        (C {(Usage)})
      ]
      op_id: Op_DAmp
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:day) op:Equal rhs:{($ VSub_Number '$1')} spids:[62])]
      spids: [62]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:which) op:Equal rhs:{($ VSub_Number '$2')} spids:[65])]
      spids: [65]
    )
    (AndOr
      children: [
        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$which'))} {(Lit_Other ']')})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:which) op:Equal rhs:{(next)} spids:[80])]
          spids: [80]
        )
      ]
      op_id: Op_DAmp
    )
    (Case
      to_match: {($ VSub_Name '$which')}
      arms: [
        (case_arm
          pat_list: [{(week)}]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(date)} {(Lit_Other '+') (Lit_Other '%') (D)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [98 104]
                            )
                          } {(Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(date)} 
                                      {(--date) (Lit_Other '=') (DQ ('next ') ($ VSub_Name '$day'))} {(Lit_Other '+') (Lit_Other '%') (D)}
                                    )
                                  ]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [108 121]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:weeks)
                          op: Equal
                          rhs: {(Lit_Other '+') (2)}
                          spids: [129]
                        )
                      ]
                      spids: [129]
                    )
                  ]
                  spids: [16777215 126]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:weeks)
                      op: Equal
                      rhs: {(Lit_Other '+') (1)}
                      spids: [140]
                    )
                  ]
                  spids: [140]
                )
              ]
              spids: [137 145]
            )
          ]
          spids: [90 91 147 16777215]
        )
        (case_arm
          pat_list: [{(last)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:weeks) op:Equal rhs:{(-1)} spids:[153])]
              spids: [153]
            )
          ]
          spids: [149 150 155 16777215]
        )
        (case_arm
          pat_list: [{(next)}]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(date)} {(Lit_Other '+') (Lit_Other '%') (D)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [165 171]
                            )
                          } {(Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(date)} 
                                      {(--date) (Lit_Other '=') (DQ ('next ') ($ VSub_Name '$day'))} {(Lit_Other '+') (Lit_Other '%') (D)}
                                    )
                                  ]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [175 188]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:weeks)
                          op: Equal
                          rhs: {(Lit_Other '+') (1)}
                          spids: [196]
                        )
                      ]
                      spids: [196]
                    )
                  ]
                  spids: [16777215 193]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:weeks)
                      op: Equal
                      rhs: {(Lit_Other '+') (0)}
                      spids: [207]
                    )
                  ]
                  spids: [207]
                )
              ]
              spids: [204 212]
            )
          ]
          spids: [157 158 214 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [(C {(Usage)})]
          spids: [216 217 221 16777215]
        )
      ]
      spids: [84 88 223]
    )
    (C {(date)} 
      {(--date) (Lit_Other '=') (DQ ($ VSub_Name '$day') (' ') ($ VSub_Name '$weeks') (' weeks'))} {(Lit_Other '+') (Lit_Other '%') (x)}
    )
  ]
)