@classmethod
def load(cls, key, backend=None, only_hdr=False):
    """Load an instance of self with the given key from specified backend.

        :param key:    A dictionary with string keys and string values as
                       produced by the get_key method or a Frontend instance.

        :param backend=None:   The backend we want to load from. If this is
                               None, we call get_backend() to try to get one.

        :param only_hdr=False: Whether to only load the header (in which case
                               we do not need a backend).

        ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-

        :return:   A new instance of self corresponding to the one we
                   `save`-ed previously if only_hdr is False or a dictionary
                   representing the header if only_hdr is True.

        ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-

        PURPOSE:  Inverse of save method; load it back.

        """
    backend = cls.get_backend(backend)
    new_item = backend.load(key, only_hdr=only_hdr, front_cls=cls)
    return new_item
