def read_cache
      return nil unless File.readable_real?(CACHE_PATH)
      index = YAML::load_file(CACHE_PATH)
      return nil unless index.created_version == Pro::VERSION
      return nil unless index.base_dirs == @base_dirs
      index
    end
def read_cache
      return nil unless File.readable_real?(CACHE_PATH)
      index = YAML::load_file(CACHE_PATH)
      return nil unless index.created_version == Pro::VERSION
      return nil unless index.base_dirs == @base_dirs
      index
    end
unserializes the cache file and returns
 the index object