<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def SmartUnicode(string):
 """Returns a unicode object. This function will always return a unicode object. It should be used to guarantee that something is always a unicode object. Args: string: The string to convert. Returns: a unicode object. """

  if isinstance(string, Text):
    return string

  if isinstance(string, bytes):
    return string.decode("utf-8", "ignore")

  # TODO: We need to call `__native__` because otherwise one of the
  # Selenium tests becomes flaky. This should be investigated.
  if compatibility.PY2:
    return str(string).__native__()
  else:
    return str(string)