<G> void shift(final MSeq<G> seq) {
			if (seq.length() < c) {
				throw new IllegalArgumentException(
					"Sequence to short for given range: [length=%d, %s]."
						.formatted(seq.length(), this)
				);
			}

			final var temp = seq.subSeq(a, b).copy();

			final var length1 = b - a;
			final var length2 = c - b;
			for (int i = 0; i < length2; ++i) {
				seq.set(a + i, seq.get(b + i));
			}
			for (int i = 0; i < length1; ++i) {
				seq.set(a + length2 + i, temp.get(i));
			}
		}
Performs the <em>shifting</em> of the elements of the given
{@code sequence}.

@param seq the elements which will be shifted
@param <G> the shifted element type
@throws NullPointerException if the given {@code sequence} is
        {@code null}
jenetics/src/main/java/io/jenetics/ShiftMutator.java