static void
reread_menus (ShellAppSystem *self)
{
  GHashTable *unique = g_hash_table_new (g_str_hash, g_str_equal);

  reread_entries (self, &(self->priv->cached_flattened_apps), unique, self->priv->apps_tree);
  g_hash_table_remove_all (unique);
  reread_entries (self, &(self->priv->cached_settings), unique, self->priv->settings_tree);
  g_hash_table_destroy (unique);

  g_hash_table_remove_all (self->priv->app_id_to_info);

  cache_by_id (self, self->priv->cached_flattened_apps);
  cache_by_id (self, self->priv->cached_settings);
}
static void
reread_menus (ShellAppSystem *self)
{
  GHashTable *unique = g_hash_table_new (g_str_hash, g_str_equal);

  g_slist_foreach (self->priv->known_vendor_prefixes, (GFunc)g_free, NULL);
  g_slist_free (self->priv->known_vendor_prefixes);
  self->priv->known_vendor_prefixes = NULL;

  reread_entries (self, &(self->priv->cached_flattened_apps), unique, self->priv->apps_tree);
  g_hash_table_remove_all (unique);
  reread_entries (self, &(self->priv->cached_settings), unique, self->priv->settings_tree);
  g_hash_table_destroy (unique);

  g_hash_table_remove_all (self->priv->app_id_to_info);

  cache_by_id (self, self->priv->cached_flattened_apps);
  cache_by_id (self, self->priv->cached_settings);
}