<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def load(cls, cache_file, backend=None):
 """Instantiate AsyncResult from dumped `cache_file`. This is the inverse of :meth:`dump`. Parameters cache_file: str Name of file from which the run should be read. backend: clusterjob.backends.ClusterjobBackend or None The backend instance for the job. If None, the backend will be determined by the *name* of the dumped job's backend. """

        with open(cache_file, 'rb') as pickle_fh:
            (remote, backend_name, max_sleep_interval, job_id, status,
             epilogue, ssh, scp) = pickle.load(pickle_fh)
        if backend is None:
            backend = JobScript._backends[backend_name]
        ar = cls(backend)
        (ar.remote, ar.max_sleep_interval, ar.job_id, ar._status, ar.epilogue,
         ar.ssh, ar.scp) \
            = (remote, max_sleep_interval, job_id, status, epilogue, ssh, scp)
        ar.cache_file = cache_file
        return ar