key :: any
pri :: any
t
token
val :: non_neg_integer
add(t, pri, key, val) :: t
delete(t, token, key) :: t
empty?(t) :: boolean
get_by_key(t, key) :: val
mapping(t, key) :: {token | nil, val | nil}
new :: t
pop(t) :: {pri, key, t}