class Generator implements Iterator<TimestampedValue<Event>>, Serializable {

  public GeneratorConfig splitAtEventId(long eventId) {
    long newMaxEvents = eventId - (config.firstEventId + config.firstEventNumber);
    GeneratorConfig remainConfig = config.copyWith(config.firstEventId,
        config.maxEvents - newMaxEvents, config.firstEventNumber + newMaxEvents);
    config = config.copyWith(config.firstEventId, newMaxEvents, config.firstEventNumber);
    return remainConfig;
  }

  private  Generator(GeneratorConfig config, long numEvents, long wallclockBaseTime);
  public  Generator(GeneratorConfig config);

}