Traverser<Object> flatMapEvent(long now, @Nullable T event, int partitionIndex, long nativeEventTime) { assert traverser.isEmpty() : "the traverser returned previously not yet drained: remove all " + "items from the traverser before you call this method again."; if (event != null) { if (timestampFn == null && nativeEventTime == NO_NATIVE_TIME) { throw new JetException("Neither timestampFn nor nativeEventTime specified"); } long eventTime = timestampFn == null ? nativeEventTime : timestampFn.applyAsLong(event); handleEventInt(now, partitionIndex, eventTime); traverser.append(wrapFn.apply(event, eventTime)); } else { handleNoEventInt(now); } return traverser; }