code: public static OffsetTime from(TemporalAccessor temporal) {
          if (temporal instanceof OffsetTime) {
              return (OffsetTime) temporal;
          }
          try {
              LocalTime time = LocalTime.from(temporal);
              ZoneOffset offset = ZoneOffset.from(temporal);
              return new OffsetTime(time, offset);
          } catch (DateTimeException ex) {
              throw new DateTimeException("Unable to obtain OffsetTime from TemporalAccessor: " +
                      temporal + " of type " + temporal.getClass().getName(), ex);
          }
      }
docs: Obtains an instance of {@code OffsetTime} from a temporal object.
  <p>
  This obtains an offset 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 OffsetTime}.
  <p>
  The conversion extracts and combines the {@code ZoneOffset} and the
  {@code LocalTime} from the temporal object.
  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 OffsetTime::from}.
  
  @param temporal  the temporal object to convert, not null
  @return the offset time, not null
  @throws DateTimeException if unable to convert to an {@code OffsetTime}