void fireIncrementalCycleComplete( long version, long recordsAddedOrModified, long recordsRemoved, Map<String, Object> cycleMetadata) { // @@@ This behaviour appears incomplete, the build is created and built // for each listener. The start time (builder creation) and end time (builder built) // results in an effectively meaningless elasped time. IncrementalCycleStatus.Builder icsb = new IncrementalCycleStatus.Builder() .success(version, recordsAddedOrModified, recordsRemoved, cycleMetadata); fire(incrementalCycleListeners, l -> l.onCycleComplete(icsb.build(), icsb.elapsed(), MILLISECONDS)); }