hash_map <key, value> =
{
  @static new (p_hash_map <key, value> -w _, int capacity)
  {
    ...
  }

  @static new (p_hash_map <key, value> -w _, int capacity, ALLOW_* allow_empty = .)
          for (value : pchar, pstruct, ptr)
  {
    ...
  }

  @static destroy (p_hash_map <key, value> -&w _)
  {
    ...
  }

  @static move (p_hash_map <key, value> -w next_placement, 
                p_hash_map <key, value> -&w current_placement)
  {
    ...
  }
}

hash_set <element> =
{
  ...
}