code: @SuppressWarnings({ "rawtypes", "unchecked" })
      public ChronoZonedDateTime<?> zonedDateTime(TemporalAccessor temporal) {
          try {
              ZoneId zone = ZoneId.from(temporal);
              try {
                  Instant instant = Instant.from(temporal);
                  return zonedDateTime(instant, zone);
  
              } catch (DateTimeException ex1) {
                  ChronoLocalDateTime cldt = localDateTime(temporal);
                  ChronoLocalDateTimeImpl cldtImpl = ensureChronoLocalDateTime(cldt);
                  return ChronoZonedDateTimeImpl.ofBest(cldtImpl, zone, null);
              }
          } catch (DateTimeException ex) {
              throw new DateTimeException("Unable to obtain ChronoZonedDateTime from TemporalAccessor: " + temporal.getClass(), ex);
          }
      }
docs: Obtains a zoned date-time in this chronology from another temporal object.
  <p>
  This creates a date-time in this chronology based on the specified {@code TemporalAccessor}.
  <p>
  This should obtain a {@code ZoneId} using {@link ZoneId#from(TemporalAccessor)}.
  The date-time should be obtained by obtaining an {@code Instant}.
  If that fails, the local date-time should be used.
  
  @param temporal  the temporal object to convert, not null
  @return the zoned date-time in this chronology, not null
  @throws DateTimeException if unable to create the date-time