async def METHOD_NAME(
    key: str,
    bpolys: FeatureCollection,
    topic: TopicData | TopicDefinition,
    include_figure: bool = True,
) -> list[Indicator]:
    """Create indicator(s) for features of a GeoJSON FeatureCollection.
    Indicators are computed asynchronously utilizing semaphores.
    Properties of the input GeoJSON are preserved.
    """
    tasks: list[Coroutine] = []
    for i, feature in enumerate(bpolys.features):
        if "id" not in feature.keys():
            feature["id"] = i
        # Only enforce size limit if ohsome API data is not provided
        # Disable size limit for the Mapping Saturation indicator
        if isinstance(topic, TopicDefinition) and key not in [
            "mapping-saturation",
            "currentness",
        ]:
            validate_area(feature)
        tasks.append(_create_indicator(key, feature, topic, include_figure))
    return await gather_with_semaphore(tasks)