* 
   * @param newDate the date of the new date-time, not null
   * @param newTime the time of the new date-time, not null
   * @return the date-time, not null
   */
  private ChronoDateTimeImpl<C> with(DateTime newDate, LocalTime newTime) {

    if (this.date == newDate && this.time == newTime) {
      return this;
    }
    // Validate that the new DateTime is a ChronoLocalDate (and not something else)
    ChronoLocalDate<C> cd = this.date.getChrono().ensureChronoLocalDate(newDate);
    return new ChronoDateTimeImpl<C>(cd, newTime);
  }