* @return the transition instance, not null
   */
  public ZoneOffsetTransition createTransition(int year) {

    LocalDate date;
    if (this.dom < 0) {
      date = LocalDate.of(year, this.month, this.month.length(ISOChrono.INSTANCE.isLeapYear(year)) + 1 + this.dom);
      if (this.dow != null) {
        date = date.with(previousOrSame(this.dow));
      }
    } else {
      date = LocalDate.of(year, this.month, this.dom);
      if (this.dow != null) {
        date = date.with(nextOrSame(this.dow));
      }
    }
    if (this.timeEndOfDay) {
      date = date.plusDays(1);
    }
    LocalDateTime localDT = LocalDateTime.of(date, this.time);
    LocalDateTime transition = this.timeDefinition.createDateTime(localDT, this.standardOffset, this.offsetBefore);
    return new ZoneOffsetTransition(transition, this.offsetBefore, this.offsetAfter);
  }