code: public static ChronoLocalDateTime<?> from(TemporalAccessor temporal) {
          Jdk8Methods.requireNonNull(temporal, "temporal");
          if (temporal instanceof ChronoLocalDateTime) {
              return (ChronoLocalDateTime<?>) temporal;
          }
          Chronology chrono = temporal.query(TemporalQueries.chronology());
          if (chrono == null) {
              throw new DateTimeException("No Chronology found to create ChronoLocalDateTime: " + temporal.getClass());
          }
          return chrono.localDateTime(temporal);
      }
docs: Obtains an instance of {@code ChronoLocalDateTime} from a temporal object.
  <p>
  This obtains a local date-time based on the specified temporal.
  A {@code TemporalAccessor} represents an arbitrary set of date and time information,
  which this factory converts to an instance of {@code ChronoLocalDateTime}.
  <p>
  The conversion extracts and combines the chronology and the date-time
  from the temporal object. The behavior is equivalent to using
  {@link Chronology#localDateTime(TemporalAccessor)} with the extracted chronology.
  Implementations are permitted to perform optimizations such as accessing
  those fields that are equivalent to the relevant objects.
  <p>
  This method matches the signature of the functional interface {@link TemporalQuery}
  allowing it to be used as a query via method reference, {@code ChronoLocalDateTime::from}.
  
  @param temporal  the temporal object to convert, not null
  @return the date-time, not null
  @throws DateTimeException if unable to convert to a {@code ChronoLocalDateTime}
  @see Chronology#localDateTime(TemporalAccessor)