The first fire time strictly after after, or null if the schedule never fires again.
Must be deterministic and monotone: the same after always yields the same result, and the result is strictly greater than after. The runtime iterates this function to enumerate missed fires, so it must be cheap.