'Return a new :class:`.Variant` which adds the given
type + dialect name to the mapping, in addition to the
mapping present in this :class:`.Variant`.
:param type_: a :class:`.TypeEngine` that will be selected
as a variant from the originating type, when a dialect
of the given name is in use.
:param dialect_name: base name of the dialect which uses
this type. (i.e. ``\'postgresql\'``, ``\'mysql\'``, etc.)'

def with_variant(self, type_, dialect_name):

    if (dialect_name in self.mapping):
        raise exc.ArgumentError(("Dialect    '%s'    is    already    present    in    the    mapping    for    this    Variant" % dialect_name))
    mapping = self.mapping.copy()
    mapping[dialect_name] = type_
    return Variant(self.impl, mapping)
