def METHOD_NAME(spec, factory_context):
    wrapped_spec = ChoiceListIndicatorSpec.wrap(spec)
    base_display_name = wrapped_spec.display_name
    def _construct_display(choice):
        return '{base} ({choice})'.format(base=base_display_name, choice=choice)
    def _construct_column(choice):
        return '{col}_{choice}'.format(col=spec['column_id'], choice=choice)
    choice_indicators = [
        BooleanIndicator(
            display_name=_construct_display(choice),
            column_id=_construct_column(choice),
            filter=SinglePropertyValueFilter(
                expression=wrapped_spec.getter,
                operator=wrapped_spec.get_operator(),
                reference_expression=ExpressionFactory.from_spec(choice),
            ),
            wrapped_spec=None,
        ) for choice in spec['choices']
    ]
    return CompoundIndicator(base_display_name, choice_indicators, wrapped_spec)