def swapcase(text):
    """
    Creates a copy of ``text`` with uppercase characters converted to lowercase and vice versa. 
    
    Note that it is not necessarily true that ``swapcase(swapcase(s)) == s``.  That is
    because of how the Unicode Standard defines cases.
    
    :param text: The string to convert
    :type text:  ``str``
    
    :return: A copy of ``text`` with uppercase characters converted to lowercase and vice versa.
    :rtype: ``str``
    """
    assert isinstance(text, str), '%s is not a string' % text
    return text.swapcase()
