Not sure why this is happening, but I have to mask this test in 1.9 mode.
<[:x, :y]> expected but was
<[:__recursive_key__, :x, :y]>.
This comes from the 1.9 implementation of "pp", which uses a thread-local hash to monitor recursion. It does not remove this hash from the thread locals, but it does pop elements off, effectively clearing it.
Calling this not a bug, since it's just a somewhat icky optimization to leave it in place, and it's from stdlib anyway.
I modified the test to be more permissive of keys leftover in the threadlocals.