code: public I withStart(T temporal) {
  
          IntervalEdge edge = this.start.getEdge();
          Boundary<T> b = Boundary.of(edge, temporal);
          return this.getFactory().between(b, this.end);
  
      }
docs: /*[deutsch]
  <p>Liefert eine Kopie dieses Intervalls mit der angegebenen
  Startzeit. </p>
  
  @param   temporal    new start timepoint
  @return  changed copy of this interval
  @throws  IllegalArgumentException if new start is after end
  @since   2.0