@classmethod
def find_matching_object(cls, obj):
    """Find a matching object, if it exists."""
    if obj and obj.properties:
        object_values = cls.get_object_values(obj)
        xsi_type = obj.properties._XSI_TYPE
        if not xsi_type:
            return None
        elif xsi_type in cls.objects_dict:
            types_dict = cls.objects_dict[xsi_type]
            for obj_id, obj_values in types_dict.iteritems():
                if obj_values == object_values:
                    return obj_id
            types_dict[obj.id_] = object_values
        else:
            types_dict = {obj.id_: object_values}
            cls.objects_dict[xsi_type] = types_dict
    return None
