Compares object contents, supports slots
    :param l:
    :param r:
    :return:

def eq_obj_contents(l, r):
    """
    Compares object contents, supports slots
    :param l:
    :param r:
    :return:
    """
    if l.__class__ is not r.__class__:
        return False
    if hasattr(l, "__slots__"):
        return eq_obj_slots(l, r)
    else:
        return l.__dict__ == r.__dict__