A version with correct code generation. Tests pass on 27. “when-initargs” is not a perfect name but it's not a global macro, and the name is short enough to allow two descriptive initargs to fit into 80 chars width so I decided not to spend time seeking for alternatives.