public static Field sequentialValueField(final String name, final List<String> values) {
        try {
            Objects.requireNonNull(values);
            Utils.checkArgument(!values.isEmpty(), "values is empty");
            final AtomicLoopedIntegerSequence indexSequence = new AtomicLoopedIntegerSequence(0, values.size());

            final Supplier<String> supplier = () ->
                    values.get(indexSequence.getNext());
            return new Field(name, supplier);
        } catch (Exception e) {
            throw new RuntimeException(Utils.message(
                    "Error building sequentialValueField, {},{}",
                    name, e.getMessage()), e);
        }
    }
Stateful value supplier that supplies a value from values in sequential order
looping back to the beginning when it gets to the end.

@param name   Field name for use in the header
@param values The values to loop through when delivering values to rows
@return A complete {@link Field}
stroom-test-common/src/main/java/stroom/test/common/data/DataGenerator.java