How to implement a polymorphic Newtonsoft.Json.JsonConverter? Given the following polymorphic type hierarchy: