@classmethod
def can_parse(cls, dct):
    """
        Returns True if this class can parse the given dict.  This is based on
        the __slots__ and required_fields of the class, and the keys of the dict.
        This is intended to be used when an element may be one of a number of
        allowed Object types - each type should independently consider if it
        can parse the given element, and the first to report that it can should
        be used.

        :param dct: The dict to consider.
        :type dct: dict

        :returns: True if this class can parse dct into an instance of itself,
                  otherwise False
        :rtype: bool
        """
    if not isinstance(dct, dict):
        return False
    for key in dct.keys():
        if key.startswith('x-'):
            continue
        if key not in cls.__slots__:
            return False
    for key in cls.required_fields:
        if key not in dct:
            return False
    return True
