'Set a key\'s value or values.
Setting a value overwrites all old ones. The value may be a
list of Unicode or UTF-8 strings, or a single Unicode or UTF-8
string.'

def __setitem__(self, key, values):

    if isinstance(key, slice):
        return list.__setitem__(self, key, values)
    if (not isinstance(values, list)):
        values = [values]
    to_append = []
    for value in values:
        if (not isinstance(value, ASFBaseAttribute)):
            if isinstance(value, string_types):
                value = ASFUnicodeAttribute(value)
            elif (PY3 and isinstance(value, bytes)):
                value = ASFByteArrayAttribute(value)
            elif isinstance(value, bool):
                value = ASFBoolAttribute(value)
            elif isinstance(value, int):
                value = ASFDWordAttribute(value)
            elif isinstance(value, long_):
                value = ASFQWordAttribute(value)
            else:
                raise TypeError(('Invalid    type    %r' % type(value)))
        to_append.append((key, value))
    try:
        del self[key]
    except KeyError:
        pass
    self.extend(to_append)
