I came across the following implementation of ToJSON using Data: json
How does it work if it doesn’t rely on any ToJSON instances explictly? Do I understand correctly it boils everything down to sum of products of primitive types using extQ case ladder?