def METHOD_NAME(
    *,
    starting=None,
    initial_days_delay=REVIEWER_STANDARD_REVIEW_TIME,
    target_per_day=None,
):
    starting = (starting or datetime.now()).replace(microsecond=0)
    # if starting falls on the weekend, move it to Monday morning.
    if starting.weekday() in (5, 6):
        starting = starting.replace(hour=9) + timedelta(days=(7 - starting.weekday()))
    due_date = starting + timedelta(days=initial_days_delay)
    if target_per_day is None:
        target_per_day = get_config(
            EXTRA_REVIEW_TARGET_PER_DAY_CONFIG_KEY, int_value=True, default=8
        )
    stagger = 24 / target_per_day
    while True:
        # if due date falls on or passes over a weekend, add on 2 days.
        if due_date.weekday() in (5, 6) or due_date.weekday() < starting.weekday():
            due_date += timedelta(days=2)
        yield due_date
        due_date += timedelta(hours=stagger)
        # When we ask the generator for more than a single date, we no longer
        # care about the due date passing over a week-end when compared to the
        # starting date (since we're arbitrarily staggering the dates in the
        # future), so fake the starting date from now on to prevent that check
        # above from triggering an additional unwanted delay.
        starting = due_date