code: private static Date add(final Date date, final int calendarField, final int amount) {
          validateDateNotNull(date);
          final Calendar c = Calendar.getInstance();
          c.setTime(date);
          c.add(calendarField, amount);
          return c.getTime();
      }
docs: Adds to a date returning a new object.
  The original {@code Date} is unchanged.
  
  @param date  the date, not null
  @param calendarField  the calendar field to add to
  @param amount  the amount to add, may be negative
  @return the new {@code Date} with the amount added
  @throws IllegalArgumentException if the date is null