def gather_columns(rule_name, columns, prefix, additions=None):
    """Build a list of all columns matching a prefix allong with potential additional rules."""
    raw_rule_name = rule_name.split(".")[0]
    if additions is None:
        additions = []

    # Reduce a pair of parens around a type back to itself.
    paren_rule = f'"(" + {raw_rule_name} + ")"'

    matching_keys = [k for k in sorted(columns.keys()) if k.startswith(prefix + "_")]
    if matching_keys + additions:
        return f"{rule_name}: " + " | ".join(matching_keys + additions + [paren_rule])
    else:
        return f'{rule_name}: "DUMMYVALUNUSABLECOL"'