'Load the cache index and return it as a dictionary (possibly
empty if cache is empty or obsolete).'

def _load_index(self):

    try:
        with open(self._index_path, 'rb') as f:
            version = pickle.load(f)
            data = f.read()
    except EnvironmentError as e:
        if (e.errno in (errno.ENOENT,)):
            return {}
        raise
    if (version != self._version):
        return {}
    (stamp, overloads) = pickle.loads(data)
    _cache_log('[cache]    index    loaded    from    %r', self._index_path)
    if (stamp != self._source_stamp):
        return {}
    else:
        return overloads
