public boolean contains(final int[] T) {
		// Check the length of the k-subset.
		if (T.length != k) {
			return false;
		}

		// Check the range of the values.
		for (var i : T) {
			if (i < 0 || i >= n) {
				return false;
			}
		}

		// Check for unique elements. The elements of 'T' must
		// be sorted in ascending order.
		var previous = T[0];
		for (int i = 1; i < k; ++i) {
			if (previous >= T[i]) {
				return false;
			} else {
				previous = T[i];
			}
		}

		return compare(start.value, T) <= 0 && compare(end.value, T) >= 0;
	}
Checks whether the given array {@code T} is part of {@code this} k-subset.
To be part of {@code this} set, the elements of {@code T} must be sorted
in ascending order.
<p>
<b>Element of KSubset[n=20, k=8]</b>
<pre>
[3, 4, 9, 11, 13, 15, 16, 17]
[5, 8, 10, 12, 14, 15, 17, 19]
[9, 11, 13, 15, 16, 17, 18, 19]
</pre>
<p>
<b>Not element of KSubset[n=20, k=8]</b>
<pre>
[4, 3, 9, 11, 13, 15, 16, 17]
[5, 8, 10, 10, 14, 15, 17, 19]
[9, 11, 13, 16, 15, 17, 19, 19]
[9, 11, 13, 16]
</pre>

@param T the k-subset to check
@return {@code true} if {@code T.length == k}, {@code T} is sorted in
        ascending order, has no duplicate elements and all elements are
        within {@code [0, n)}, {@code false} otherwise
jenetics.incubator/src/main/java/io/jenetics/incubator/combinatorial/KSubset.java