* Returns a new date based on this one, returning {@code this} where possible.
   * 
   * @param date the date to create with, not null
   * @param offset the zone offset to create with, not null
   */
  private OffsetDate with(LocalDate date, ZoneOffset offset) {

    if (this.date == date && this.offset.equals(offset)) {
      return this;
    }
    return new OffsetDate(date, offset);
  }