code: public static AccountingDate from(AccountingChronology chronology, TemporalAccessor temporal) {
          if (temporal instanceof AccountingDate && ((AccountingDate) temporal).getChronology().equals(chronology)) {
              return (AccountingDate) temporal;
          }
          return ofEpochDay(chronology, temporal.getLong(EPOCH_DAY));
      }
docs: Obtains an {@code AccountingDate} from a temporal object.
  <p>
  This obtains a date in the specified Accounting calendar system 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 AccountingDate}.
  <p>
  The conversion typically uses the {@link ChronoField#EPOCH_DAY EPOCH_DAY}
  field, which is standardized across calendar systems.
  <p>
  This method almost matches the signature of the functional interface {@link TemporalQuery}
  and must be used as a query via something that supplies the missing parameter,
  such as a curried method reference, {@code temporal -> AccountingDate.from(chronology, temporal)}
  (where {@code chronology} resolves to a set up {@code AccountingChronology}).
  
  @param chronology  the Accounting chronology to base the date on, not null
  @param temporal  the temporal object to convert, not null
  @return the date in Accounting calendar system, not null
  @throws DateTimeException if unable to convert to an {@code AccountingDate},
  NullPointerException if an AccountingChronology was not provided