protected internal override Value FetchNextOrNull() { Value value; if (FractionDuplicates > 0 && UniqueValues.Count > 0 && RandomValues.nextFloat() < FractionDuplicates) { value = RandomValues.among(UniqueValues); } else { value = NewUniqueValue(RandomValues, UniqueCompareValues, UniqueValues); } return(value); }