code: public HistoricDate convert(PlainDate date) {
  
          long mjd = date.get(EpochDays.MODIFIED_JULIAN_DATE);
          HistoricDate hd = null;
  
          for (int i = this.events.size() - 1; i >= 0; i--) {
              CutOverEvent event = this.events.get(i);
  
              if (mjd >= event.start) {
                  hd = event.algorithm.fromMJD(mjd);
                  break;
              }
          }
  
          if (hd == null) {
              hd = this.getJulianAlgorithm().fromMJD(mjd);
          }
  
          HistoricEra era = this.eraPreference.getPreferredEra(hd, date);
  
          if (era != hd.getEra()) {
              int yoe = era.yearOfEra(hd.getEra(), hd.getYearOfEra());
              hd = HistoricDate.of(era, yoe, hd.getMonth(), hd.getDayOfMonth());
          }
  
          if (this.isOutOfRange(hd)) {
              throw new IllegalArgumentException("Out of supported range: " + hd);
          }
  
          return hd;
  
      }
docs: /*[deutsch]
  <p>Konvertiert das angegebene ISO-8601-Datum zu einem historischen Datum. </p>
  
  @param   date    ISO-8601-date (gregorian)
  @return  historic calendar date
  @throws  IllegalArgumentException if given date is out of supported range
  @since   3.0