I have a simple recursive type for Json and JsonMaps:
These seem to work fine for type checking and as predicates, but raise when I use them to cast a value:
No plan to implement myself.