"nullable" vs. "optional" example is wrong (g_hash_table_iter_next)
https://wiki.gnome.org/Projects/GObjectIntrospection/Annotations/ uses g_hash_table_iter_next to describe the difference between "nullable" and "optional". As an example, that is wrong, i.e., @key should be both "nullable" and "optional".
There is nothing wrong with having a GHashTable where NULL is a valid key. All it requires is that the hash and equal functions handle it. An example is g_direct_hash/g_direct_equal.