WITH-STOLEN-ALIST

(with-stolen-alist name form) ensures that name is a fast alist at the
start of the execution of form. At the end of execution, it ensures that
name is a fast alist if and only if it was originally. That is, if
name was not a fast alist originally, its hash table link is freed, and if
it was a fast alist originally but its table was modified during the execution
of form, that table is restored. Note that any extended table created from
the original fast alist during form must be manually freed.