code: public void add(int field, int amount) {
          switch (field) {
          case MONTH:
              if (amount != 0) {
                  int dom = get(DAY_OF_MONTH);
                  int day = get(JULIAN_DAY) - EPOCH_JULIAN_DAY; // Get local day
                  int moon = day - dom + 1; // New moon 
                  offsetMonth(moon, dom, amount);
              }
              break;
          default:
              super.add(field, amount);
              break;
          }
      }
docs: Override Calendar to handle leap months properly.