<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def GetValue(self, identifier, default_value=None):
 """Retrieves a value by identifier. Args: identifier (str):
 case insensitive unique identifier for the value. default_value (object):
 default value. Returns: object: value or default value if not available. Raises: TypeError: if the identifier is not a string type. """

    if not isinstance(identifier, py2to3.STRING_TYPES):
      raise TypeError('Identifier not a string type.')

    identifier = identifier.lower()
    return self._values.get(identifier, default_value)