(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PATH)
          op: assign_op.Equal
          rhs: {<.> <Id.Lit_Other ':'> ($ Id.VSub_DollarName '$PATH')}
          spids: [7]
        )
      ]
    )
    (command.ShFunction
      name: exceedsDaysInMonth
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Pipeline
                            children: [
                              (C {<echo>} {($ Id.VSub_Number '$1')})
                              (C {<tr>} {(SQ <'[:upper:]'>)} {(SQ <'[:lower:]'>)})
                            ]
                            negated: F
                          )
                        ]
                      )
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{<jan> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<31>}
                          spids: [59]
                        )
                      ]
                    )
                  ]
                  spids: [54 57 62 -1]
                )
                (case_arm
                  pat_list: [{<feb> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<28>}
                          spids: [69]
                        )
                      ]
                    )
                  ]
                  spids: [64 67 72 -1]
                )
                (case_arm
                  pat_list: [{<mar> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<31>}
                          spids: [80]
                        )
                      ]
                    )
                  ]
                  spids: [75 78 83 -1]
                )
                (case_arm
                  pat_list: [{<apr> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<30>}
                          spids: [90]
                        )
                      ]
                    )
                  ]
                  spids: [85 88 93 -1]
                )
                (case_arm
                  pat_list: [{<may> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<31>}
                          spids: [101]
                        )
                      ]
                    )
                  ]
                  spids: [96 99 104 -1]
                )
                (case_arm
                  pat_list: [{<jun> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<30>}
                          spids: [111]
                        )
                      ]
                    )
                  ]
                  spids: [106 109 114 -1]
                )
                (case_arm
                  pat_list: [{<jul> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<31>}
                          spids: [122]
                        )
                      ]
                    )
                  ]
                  spids: [117 120 125 -1]
                )
                (case_arm
                  pat_list: [{<aug> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<31>}
                          spids: [132]
                        )
                      ]
                    )
                  ]
                  spids: [127 130 135 -1]
                )
                (case_arm
                  pat_list: [{<sep> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<30>}
                          spids: [143]
                        )
                      ]
                    )
                  ]
                  spids: [138 141 146 -1]
                )
                (case_arm
                  pat_list: [{<oct> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<31>}
                          spids: [153]
                        )
                      ]
                    )
                  ]
                  spids: [148 151 156 -1]
                )
                (case_arm
                  pat_list: [{<nov> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<30>}
                          spids: [164]
                        )
                      ]
                    )
                  ]
                  spids: [159 162 167 -1]
                )
                (case_arm
                  pat_list: [{<dec> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:days)
                          op: assign_op.Equal
                          rhs: {<31>}
                          spids: [174]
                        )
                      ]
                    )
                  ]
                  spids: [169 172 177 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [
                            {<echo>}
                            {
                              (DQ ($ Id.VSub_Number '$0') <': Unknown month name '> 
                                ($ Id.VSub_Number '$1')
                              )
                            }
                          ]
                          redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [180 182 -1 201]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} {<-lt>} {<1>} {<-o>} 
                          {($ Id.VSub_Number '$2')} {<-gt>} {($ Id.VSub_DollarName '$days')} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [204 226]
                )
              ]
              else_action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
            )
          ]
        )
    )
    (command.ShFunction
      name: isLeapYear
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:year)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [292]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {
                            (DQ 
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Percent
                                    left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike year>)
                                    right: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                                  )
                              )
                            )
                          } {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [296 319]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {
                            (DQ 
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Percent
                                    left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike year>)
                                    right: (arith_expr.ArithWord w:{<Id.Lit_Digits 400>})
                                  )
                              )
                            )
                          } {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [330 353]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {
                            (DQ 
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Percent
                                    left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike year>)
                                    right: (arith_expr.ArithWord w:{<Id.Lit_Digits 100>})
                                  )
                              )
                            )
                          } {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [364 387]
                )
              ]
              else_action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
            )
          ]
        )
    )
  ]
)