<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_default_property_value(property_name, property_type_id, default_value_string):
 """Parse the default value string into its proper form given the property type ID. Args: property_name: string, the name of the property whose default value is being parsed. Used primarily to construct meaningful error messages, should the default value prove invalid. property_type_id: int, one of the property type ID constants defined in this file that OrientDB uses to designate the native type of a given property. default_value_string: string, the textual representation of the default value for for the property, as returned by OrientDB's schema introspection code. Returns: an object of type matching the property that can be used as the property's default value. For example, if the property is of string type, the return type will be a string, and if the property is of list type, the return type will be a list. Raises: AssertionError, if the default value is not supported or does not match the property's declared type (e.g. if a default of "[]" is set on an integer property). """

    if property_type_id == PROPERTY_TYPE_EMBEDDED_SET_ID and default_value_string == '{}':
        return set()
    elif property_type_id == PROPERTY_TYPE_EMBEDDED_LIST_ID and default_value_string == '[]':
        return list()
    elif (property_type_id == PROPERTY_TYPE_STRING_ID and
          isinstance(default_value_string, six.string_types)):
        return default_value_string
    elif property_type_id == PROPERTY_TYPE_BOOLEAN_ID:
        return _parse_bool_default_value(property_name, default_value_string)
    elif property_type_id == PROPERTY_TYPE_DATETIME_ID:
        return _parse_datetime_default_value(property_name, default_value_string)
    elif property_type_id == PROPERTY_TYPE_DATE_ID:
        return _parse_date_default_value(property_name, default_value_string)
    else:
        raise AssertionError(u'Unsupported default value for property "{}" with type id {}: '
                             u'{}'.format(property_name, property_type_id, default_value_string))