- Rename the whole class and its inner transforms to sound more verb-like, e.g.: GenerateRange.Bounded/Unbounded (as opposed to current CountingInput.BoundedCountingInput)
- Provide a more unified API between bounded and unbounded cases: GenerateRange.from(100) should return a GenerateRange.Unbounded; GenerateRange.from(100).to(200) should return a GenerateRange.Bounded. They both should accept a timestampFn. The unbounded one should not have a withMaxNumRecords builder - that's redundant with specifying the range.
- (optional) Use AutoValue