def METHOD_NAME(self, pruned_course_outline: UserCourseOutlineData) -> ScheduleData:
    """
    Return supplementary scheduling information for this outline.
    Be careful to pass in a UserCourseOutlineData–i.e. an outline that has
    already been pruned to what a user is allowed to see. That way, we can
    use this to make sure that we're not returning data about
    LearningSequences that the user can't see because it was hidden by a
    different OutlineProcessor.
    """
    def _effective_start(*dates):
        specified_dates = [date for date in dates if date is not None]
        return max(specified_dates) if specified_dates else None
    pruned_section_keys = {section.usage_key for section in pruned_course_outline.sections}  # lint-amnesty, pylint: disable=unused-variable
    course_usage_key = self.course_key.make_usage_key('course', 'course')
    course_start = self.keys_to_schedule_fields[course_usage_key].get('start')
    course_end = self.keys_to_schedule_fields[course_usage_key].get('end')
    days_early_for_beta = pruned_course_outline.days_early_for_beta
    if days_early_for_beta is not None and self._is_beta_tester:
        start_offset = timedelta(days=days_early_for_beta)
    else:
        start_offset = timedelta(days=0)
    if course_start is not None:
        course_start -= start_offset
    sequences = {}
    sections = {}
    for section in pruned_course_outline.sections:
        section_dict = self.keys_to_schedule_fields[section.usage_key]
        section_start = section_dict.get('start')
        if section_start is not None:
            section_start -= start_offset
        section_effective_start = _effective_start(course_start, section_start)
        section_due = section_dict.get('due')
        sections[section.usage_key] = ScheduleItemData(
            usage_key=section.usage_key,
            start=section_start,
            effective_start=section_effective_start,
            due=section_due,
        )
        for seq in section.sequences:
            seq_dict = self.keys_to_schedule_fields[seq.usage_key]
            seq_start = seq_dict.get('start')
            if seq_start is not None:
                seq_start -= start_offset
            seq_due = seq_dict.get('due')
            sequences[seq.usage_key] = ScheduleItemData(
                usage_key=seq.usage_key,
                start=seq_start,
                effective_start=_effective_start(section_effective_start, seq_start),
                due=seq_due,
            )
    return ScheduleData(
        course_start=course_start,
        course_end=course_end,
        sections=sections,
        sequences=sequences,
    )