/* Returns: TRUE if the key was found in the #GHashTable  */
gboolean g_hash_table_lookup_extended(GHashTable *hash_table, gconstpointer lookup_key, gpointer *orig_key, gpointer *value)
/* Returns: TRUE if the key was found in the #GHashTable  */
gboolean g_hash_table_lookup_extended(GHashTable *hash_table, gconstpointer lookup_key, gpointer *orig_key, gpointer *value)
{
  guint node_index;
  guint node_hash;
  g_return_val_if_fail (hash_table != NULL, FALSE);
  node_index = g_hash_table_lookup_node (hash_table, lookup_key, &node_hash);
  if (!HASH_IS_REAL (hash_table->hashes[node_index]))
    return FALSE;
  if (orig_key)
    *orig_key = hash_table->keys[node_index];
  if (value)
    *value = hash_table->values[node_index];
  return TRUE;
}