/**
  * Obtains an instance from an instant using the specified time-zone.
  *
  * @param Chronology $chrono the chronology, not null
  * @param Instant $instant the instant, not null
  * @param ZoneId $zone the zone identifier, not null
  * @return ChronoZonedDateTimeImpl the zoned date-time, not null
  */
 static function ofInstant(Chronology $chrono, Instant $instant, ZoneId $zone)
 {
     $rules = $zone->getRules();
     $offset = $rules->getOffset($instant);
     // TODO Objects.requireNonNull(offset, "offset");  // protect against bad ZoneRules
     $ldt = LocalDateTime::ofEpochSecond($instant->getEpochSecond(), $instant->getNano(), $offset);
     $cldt = $chrono->localDateTime($ldt);
     return new ChronoZonedDateTimeImpl($cldt, $offset, $zone);
 }