code: static <R extends ChronoLocalDate> ChronoZonedDateTime<R> ofBest(
              ChronoLocalDateTimeImpl<R> localDateTime, ZoneId zone, ZoneOffset preferredOffset) {
          Jdk8Methods.requireNonNull(localDateTime, "localDateTime");
          Jdk8Methods.requireNonNull(zone, "zone");
          if (zone instanceof ZoneOffset) {
              return new ChronoZonedDateTimeImpl<R>(localDateTime, (ZoneOffset) zone, zone);
          }
          ZoneRules rules = zone.getRules();
          LocalDateTime isoLDT = LocalDateTime.from(localDateTime);
          List<ZoneOffset> validOffsets = rules.getValidOffsets(isoLDT);
          ZoneOffset offset;
          if (validOffsets.size() == 1) {
              offset = validOffsets.get(0);
          } else if (validOffsets.size() == 0) {
              ZoneOffsetTransition trans = rules.getTransition(isoLDT);
              localDateTime = localDateTime.plusSeconds(trans.getDuration().getSeconds());
              offset = trans.getOffsetAfter();
          } else {
              if (preferredOffset != null && validOffsets.contains(preferredOffset)) {
                  offset = preferredOffset;
              } else {
                  offset = validOffsets.get(0);
              }
          }
          Jdk8Methods.requireNonNull(offset, "offset");  // protect against bad ZoneRules
          return new ChronoZonedDateTimeImpl<R>(localDateTime, offset, zone);
      }
docs: Obtains an instance from a local date-time using the preferred offset if possible.
  
  @param localDateTime  the local date-time, not null
  @param zone  the zone identifier, not null
  @param preferredOffset  the zone offset, null if no preference
  @return the zoned date-time, not null