@Override
  public ChronoDateTimeImpl<C> with(DateTimeField field, long newValue) {

    if (field instanceof ChronoField) {
      ChronoField f = (ChronoField) field;
      if (f.isTimeField()) {
        return with(this.date, this.time.with(field, newValue));
      } else {
        return with(this.date.with(field, newValue), this.time);
      }
    }
    return this.date.getChrono().ensureChronoLocalDateTime(field.doWith(this, newValue));
  }