Separate codable struct seems like a lot of painful duplication.
Particularly when you have a tree of subclasses...