*/
  @Override
  public String toString() {

    StringBuilder buf = new StringBuilder();
    buf.append("TransitionRule[").append(this.offsetBefore.compareTo(this.offsetAfter) > 0 ? "Gap " : "Overlap ")
        .append(this.offsetBefore).append(" to ").append(this.offsetAfter).append(", ");
    if (this.dow != null) {
      if (this.dom == -1) {
        buf.append(this.dow.name()).append(" on or before last day of ").append(this.month.name());
      } else if (this.dom < 0) {
        buf.append(this.dow.name()).append(" on or before last day minus ").append(-this.dom - 1).append(" of ")
            .append(this.month.name());
      } else {
        buf.append(this.dow.name()).append(" on or after ").append(this.month.name()).append(' ').append(this.dom);
      }
    } else {
      buf.append(this.month.name()).append(' ').append(this.dom);
    }
    buf.append(" at ").append(this.timeEndOfDay ? "24:00" : this.time.toString()).append(" ")
        .append(this.timeDefinition).append(", standard offset ").append(this.standardOffset).append(']');
    return buf.toString();
  }