code: public ZoneRulesBuilder addWindow(
              ZoneOffset standardOffset,
              LocalDateTime until,
              TimeDefinition untilDefinition) {
          Jdk8Methods.requireNonNull(standardOffset, "standardOffset");
          Jdk8Methods.requireNonNull(until, "until");
          Jdk8Methods.requireNonNull(untilDefinition, "untilDefinition");
          TZWindow window = new TZWindow(standardOffset, until, untilDefinition);
          if (windowList.size() > 0) {
              TZWindow previous = windowList.get(windowList.size() - 1);
              window.validateWindowOrder(previous);
          }
          windowList.add(window);
          return this;
      }
docs: Adds a window to the builder that can be used to filter a set of rules.
  <p>
  This method defines and adds a window to the zone where the standard offset is specified.
  The window limits the effect of subsequent additions of transition rules
  or fixed savings. If neither rules or fixed savings are added to the window
  then the window will default to no savings.
  <p>
  Each window must be added sequentially, as the start instant of the window
  is derived from the until instant of the previous window.
  
  @param standardOffset  the standard offset, not null
  @param until  the date-time that the offset applies until, not null
  @param untilDefinition  the time type for the until date-time, not null
  @return this, for chaining
  @throws IllegalStateException if the window order is invalid