A form such as (pushnew x y :key a :key b) is parsed incorrectly. First of all, it is the second
:key that retained. But it should probably preserve all the arguments, no? It also rejects
an argument list such as (pushnew x y :key a :hello b :allow-other-keys t) but this is
perfectly valid syntax.