(command.CommandList
  children: [
    (command.ShFunction
      name: Usage
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ('Usage: ') 
                    (command_sub
                      left_token: <Left_Backtick '`'>
                      command_list: 
                        (command.CommandList
                          children: [(C {(basename)} {($ VSub_Number '$0')})]
                        )
                    ) (' mon|tue|... [next]|week|last')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_LBracket '[')} {(DQ ($ VSub_Pound '$#'))} {(-eq)} {(DQ (0))} {(Lit_RBracket ']')})
        (C {(Usage)})
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:day) op:Equal rhs:{($ VSub_Number '$1')})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:which) op:Equal rhs:{($ VSub_Number '$2')})]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_LBracket '[')} {(-z)} {(DQ ($ VSub_DollarName '$which'))} {(Lit_RBracket ']')})
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:which) op:Equal rhs:{(next)})]
        )
      ]
    )
    (command.Case
      to_match: {($ VSub_DollarName '$which')}
      arms: [
        (case_arm
          pat_list: [{(week)}]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} 
                          {
                            (command_sub
                              left_token: <Left_Backtick '`'>
                              command_list: 
                                (command.CommandList
                                  children: [(C {(date)} {(Lit_Other '+') (Lit_Other '%') (D)})]
                                )
                            )
                          } {(Lit_Equals '=')} 
                          {
                            (command_sub
                              left_token: <Left_Backtick '`'>
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(date)} 
                                      {(--date) (Lit_Equals '=') 
                                        (DQ ('next ') ($ VSub_DollarName '$day'))
                                      } {(Lit_Other '+') (Lit_Other '%') (D)}
                                    )
                                  ]
                                )
                            )
                          } {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:weeks)
                          op: Equal
                          rhs: {(Lit_Other '+') (2)}
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:weeks)
                      op: Equal
                      rhs: {(Lit_Other '+') (1)}
                    )
                  ]
                )
              ]
            )
          ]
        )
        (case_arm
          pat_list: [{(last)}]
          action: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:weeks) op:Equal rhs:{(-1)})]
            )
          ]
        )
        (case_arm
          pat_list: [{(next)}]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} 
                          {
                            (command_sub
                              left_token: <Left_Backtick '`'>
                              command_list: 
                                (command.CommandList
                                  children: [(C {(date)} {(Lit_Other '+') (Lit_Other '%') (D)})]
                                )
                            )
                          } {(Lit_Equals '=')} 
                          {
                            (command_sub
                              left_token: <Left_Backtick '`'>
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(date)} 
                                      {(--date) (Lit_Equals '=') 
                                        (DQ ('next ') ($ VSub_DollarName '$day'))
                                      } {(Lit_Other '+') (Lit_Other '%') (D)}
                                    )
                                  ]
                                )
                            )
                          } {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:weeks)
                          op: Equal
                          rhs: {(Lit_Other '+') (1)}
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:weeks)
                      op: Equal
                      rhs: {(Lit_Other '+') (0)}
                    )
                  ]
                )
              ]
            )
          ]
        )
        (case_arm pat_list:[{(Lit_Star '*')}] action:[(C {(Usage)})])
      ]
    )
    (C {(date)} 
      {(--date) (Lit_Equals '=') 
        (DQ ($ VSub_DollarName '$day') (' ') ($ VSub_DollarName '$weeks') (' weeks'))
      } {(Lit_Other '+') (Lit_Other '%') (x)}
    )
  ]
)