public static Field sequentialDateTimeField(final String name,
                                                final LocalDateTime startDateInc,
                                                final Duration delta,
                                                final DateTimeFormatter formatter) {
        try {
            final AtomicReference<LocalDateTime> lastValueRef = new AtomicReference<>(startDateInc);

            final Supplier<String> supplier = () -> {
                try {
                    return lastValueRef.getAndUpdate(lastVal -> lastVal.plus(delta))
                            .format(formatter);
                } catch (Exception e) {
                    throw new RuntimeException(Utils.message("Time range is too large, maximum allowed: {}",
                            Duration.ofMillis(Integer.MAX_VALUE).toString()));
                }
            };
            return new Field(name, supplier);
        } catch (Exception e) {
            throw new RuntimeException(Utils.message("Error building sequentialDateTimeField, {}, {}",
                    name,
                    e.getMessage()), e);
        }
    }
A field to produce a sequence of datetime values with a constant delta based on
a configured start datetime and delta. The formatter controls the output format.

@param name         Field name for use in the header
@param startDateInc The start date for the random times (inclusive)
@param delta        The delta to apply to successive values
@param formatter    {@link DateTimeFormatter} to use
@return A complete {@link Field}
stroom-test-common/src/main/java/stroom/test/common/data/DataGenerator.java