code: public ZonedDateTime minusMonths(long months) {
          return (months == Long.MIN_VALUE ? plusMonths(Long.MAX_VALUE).plusMonths(1) : plusMonths(-months));
      }
docs: Returns a copy of this {@code ZonedDateTime} with the specified number of months subtracted.
  <p>
  This operates on the local time-line,
  {@link LocalDateTime#minusMonths(long) subtracting months} to the local date-time.
  This is then converted back to a {@code ZonedDateTime}, using the zone ID
  to obtain the offset.
  <p>
  When converting back to {@code ZonedDateTime}, if the local date-time is in an overlap,
  then the offset will be retained if possible, otherwise the earlier offset will be used.
  If in a gap, the local date-time will be adjusted forward by the length of the gap.
  <p>
  This instance is immutable and unaffected by this method call.
  
  @param months  the months to subtract, may be negative
  @return a {@code ZonedDateTime} based on this date-time with the months subtracted, not null
  @throws DateTimeException if the result exceeds the supported date range