code: public static MomentInterval surrounding(
          Moment moment,
          MachineTime<?> duration,
          double alignment
      ) {
  
          if ((Double.compare(alignment, 0.0) < 0) || (Double.compare(alignment, 1.0) > 0)) {
              throw new IllegalArgumentException("Out of range: " + alignment);
          }
  
          Moment start = subtract(moment, duration.multipliedBy(alignment));
          return MomentInterval.between(start, (alignment == 1.0) ? moment : add(start, duration));
  
      }
docs: /*[deutsch]
  <p>Erzeugt ein Intervall, das den angegebenen Zeitpunkt umgibt. </p>
  
  <p><strong>Ausrichtung: </strong></p>
  <ul>
  <li>Wenn die Ausrichtung {@code 0.0} ist, beginnt das neue Interval mit dem angegebenen Moment.</li>
  <li>Wenn die Ausrichtung {@code 0.5} ist, ist das neue Interval um den angegebenen Moment zentriert.</li>
  <li>Wenn die Ausrichtung {@code 1.0} ist, endet das neue Interval mit dem angegebenen Moment.</li>
  </ul>
  
  @param   moment      embedded moment at focus of alignment
  @param   duration    machine time duration
  @param   alignment   determines how to align the interval around moment (in range {@code 0.0 <= x <= 1.0})
  @return  new moment interval
  @throws  IllegalArgumentException if the duration is negative or the alignment is not finite or out of range
  @throws  UnsupportedOperationException if any given or calculated moment is before 1972 (only for SI-duration)
  @see     #LEFT_ALIGNED
  @see     #CENTERED
  @see     #RIGHT_ALIGNED
  @since   3.34/4.29