'Find the version_history_depth next versions of this course. Return as a VersionTree
Mostly makes sense when course_locator uses a version_guid, but because it finds all relevant
next versions, these do include those created for other courses.
:param course_locator:'

def get_course_successors(self, course_locator, version_history_depth=1):

    if ((not isinstance(course_locator, CourseLocator)) or course_locator.deprecated):
        raise ItemNotFoundError(course_locator)
    if (version_history_depth < 1):
        return None
    if (course_locator.version_guid is None):
        course = self._lookup_course(course_locator)
        version_guid = course.structure['_id']
        course_locator = course_locator.for_version(version_guid)
    else:
        version_guid = course_locator.version_guid
    next_entries = self.find_structures_derived_from([version_guid])
    next_versions = [struct for struct in next_entries]
    result = {version_guid: [CourseLocator(version_guid=struct['_id']) for struct in next_versions]}
    depth = 1
    while ((depth < version_history_depth) and (len(next_versions) > 0)):
        depth += 1
        next_entries = self.find_structures_derived_from([struct['_id'] for struct in next_versions])
        next_versions = [struct for struct in next_entries]
        for course_structure in next_versions:
            result.setdefault(course_structure['previous_version'], []).append(CourseLocator(version_guid=struct['_id']))
    return VersionTree(course_locator, result)
