(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:-1 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: [-1 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 -1]
        )
        (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 -1]
        )
        (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: [-1 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 -1]
        )
        (case_arm pat_list:[{(Lit_Other "*")}] action:[(C {(Usage)})] spids:[216217221-1])
      ]
      spids: [84 88 223]
    )
    (C {(date)} 
      {(--date) (Lit_Other "=") (DQ ($ VSub_Name "$day") (" ") ($ VSub_Name "$weeks") (" weeks"))} {(Lit_Other "+") (Lit_Other "%") (x)}
    )
  ]
)