This uses the fastest possible hash function.
Its drawback is that its hash codes become invalid at every garbage-collection
(except if all keys are immediate objects),
thus requiring a reorganization of the hash table at the first
access after each garbage-collection. Especially when generational garbage-collection is used,
which leads to frequent small garbage-collections, large hash table with this test
can lead to scalability problems.

When the symbol EQ or the function #'eq is
used as a :TEST argument, the value of the variable
CUSTOM:*EQ-HASHFUNCTION* is used instead.
This value must be one of EXT:FASTHASH-EQ, EXT:STABLEHASH-EQ.

Similarly, the :TEST argument can also be one
of the symbols EXT:FASTHASH-EQL,
EXT:STABLEHASH-EQL,
EXT:FASTHASH-EQUAL,
EXT:STABLEHASH-EQUAL.
The same remarks apply as for EXT:FASTHASH-EQ and EXT:STABLEHASH-EQ.
When the symbol EQL or the function #'eql is used
as a :TEST argument, the value of the variable
CUSTOM:*EQL-HASHFUNCTION* is used
instead; this value must be one of EXT:FASTHASH-EQL,
EXT:STABLEHASH-EQL.
Similarly, when the symbol EQUAL or the function #'equal
is used as a :TEST argument, the value of the variable
CUSTOM:*EQUAL-HASHFUNCTION* is used
instead; this value must be one of EXT:FASTHASH-EQUAL,
EXT:STABLEHASH-EQUAL.

The :WARN-IF-NEEDS-REHASH-AFTER-GC argument,
if true, causes a WARNING to be SIGNALed when an object is stored
into the table which will force table reorganizations at the first
access of the table after each garbage-collection.
This keyword argument can be used to check whether EXT:STABLEHASH-EQ
should be preferred over EXT:FASTHASH-EQ for a particular table.
Use HASH-TABLE-WARN-IF-NEEDS-REHASH-AFTER-GC
to check and SETF this parameter after the table has been created.

The :INITIAL-CONTENTS argument is an
association list that is used to initialize the new hash table.

In the remaining cases, you should store a hash key
inside the object, of which you can guarantee uniqueness through
your application (for example the ID of an object in a database, or
the serial number of an object), and use this key as hash key
instead of the original object.