def METHOD_NAME(domain, case_type, exclude=None):
    exclude_fields = set(RESERVED_FIELDS) | set(exclude or [])
    hints_dict = get_values_hints_dict(domain, case_type)
    deprecated_fields = get_deprecated_fields(domain, case_type)
    special_field_specs = (field_spec for field_spec in get_special_fields(domain))
    dynamic_field_specs = (
        FieldSpec(field=field, show_in_menu=True, values_hints=hints_dict[field],
                  deprecated=field in deprecated_fields)
        for field in get_all_case_properties_for_case_type(domain, case_type, exclude_deprecated_properties=False))
    return _combine_field_specs(
        itertools.chain(special_field_specs, dynamic_field_specs),
        exclude_fields=exclude_fields
    )