Combine LIST1 and LIST2 using a set-intersection operation.
The resulting list contains all items that appear in both LIST1 and LIST2.
This is a destructive function; it reuses the storage of LIST1 and LIST2
whenever possible.
Keywords supported: :test :test-not :key
(fn LIST1 LIST2 [KEYWORD VALUE]...)