Parse the dictionary and return an Entity instance.

        This will attempt to extract type information from the input
        dictionary and pass it to entity_class to resolve the correct class
        for the type.

        Args:
            cls_dict: A dictionary representation of an Entity object.
            fallback_xsi_type: An xsi_type to use for string input, which
            doesn't have properties

        Returns:
            An Entity instance.

def from_dict(cls, cls_dict, fallback_xsi_type=None):
        """Parse the dictionary and return an Entity instance.

        This will attempt to extract type information from the input
        dictionary and pass it to entity_class to resolve the correct class
        for the type.

        Args:
            cls_dict: A dictionary representation of an Entity object.
            fallback_xsi_type: An xsi_type to use for string input, which
            doesn't have properties

        Returns:
            An Entity instance.
        """
        if not cls_dict:
            return None
        
        if isinstance(cls_dict, six.string_types):
            if not getattr(cls, "_convert_strings", False):
                return cls_dict

        try:
            typekey = cls.dictkey(cls_dict)
        except TypeError:
            typekey = fallback_xsi_type
        klass   = cls.entity_class(typekey)
        return klass.from_dict(cls_dict)