code: <D extends ChronoLocalDate> ChronoZonedDateTimeImpl<D> ensureChronoZonedDateTime(Temporal temporal) {
          @SuppressWarnings("unchecked")
          ChronoZonedDateTimeImpl<D> other = (ChronoZonedDateTimeImpl<D>) temporal;
          if (this.equals(other.toLocalDate().getChronology()) == false) {
              throw new ClassCastException("Chrono mismatch, required: " + getId()
                      + ", supplied: " + other.toLocalDate().getChronology().getId());
          }
          return other;
      }
docs: Casts the {@code Temporal} to {@code ChronoZonedDateTimeImpl} with the same chronology.
  
  @param temporal  a date-time to cast, not null
  @return the date-time checked and cast to {@code ChronoZonedDateTimeImpl}, not null
  @throws ClassCastException if the date-time cannot be cast to ChronoZonedDateTimeImpl
  or the chronology is not equal this Chrono