def METHOD_NAME(self, other, combining=()):
    """
    Preserves duplicates, with the exception of columns in *combining*.
    """
    seen_combining = set()
    columns = []
    # Other is also a Columns object.
    for c in self._columns + other._columns: # pylint:disable=protected-access
        if c.name in combining:
            if c.name not in seen_combining:
                columns.append(c)
                seen_combining.add(c.name)
        else:
            columns.append(c)
    return type(self)(columns)