def METHOD_NAME(trigger_zones: Iterable[TriggerZone]) -> List[SceneryGroup]:
    """Define scenery objectives based on their encompassing blue/red circle."""
    zone_definitions = []
    white_zones = []
    scenery_groups = []
    # Aggregate trigger zones into different groups based on color.
    for zone in trigger_zones:
        if SceneryGroup.is_blue(zone):
            zone_definitions.append(zone)
        if SceneryGroup.is_white(zone):
            white_zones.append(zone)
    # For each objective definition.
    for zone_def in zone_definitions:
        zone_def_name = zone_def.name
        if len(zone_def.properties) == 0:
            raise SceneryGroupError(
                "Undefined SceneryGroup category in TriggerZone: " + zone_def_name
            )
        # Arbitrary campaign design requirement:  First property must define the category.
        zone_def_category = zone_def.properties[1].get("value").lower()
        valid_white_zones = []
        for zone in list(white_zones):
            if _point_in_zone(zone_def, zone.position):
                valid_white_zones.append(zone)
                white_zones.remove(zone)
        if len(valid_white_zones) > 0 and zone_def_category in NAME_BY_CATEGORY:
            scenery_groups.append(
                SceneryGroup(zone_def, valid_white_zones, zone_def_category)
            )
        elif len(valid_white_zones) == 0:
            raise SceneryGroupError(
                "No white triggerzones found in: " + zone_def_name
            )
        elif zone_def_category not in NAME_BY_CATEGORY:
            raise SceneryGroupError(
                "Incorrect TriggerZone category definition for: "
                + zone_def_name
                + " in campaign definition.  TriggerZone category: "
                + zone_def_category
            )
    return scenery_groups