Дезертициализация поля, которое может быть одним из двух типов данных с использованием Moshi

Я получаю JSON с сервера OrientDB, который выглядит примерно так:

{ ... "out": ..., "in": ..., ... } 

Теперь эти два поля и могут быть одного из двух типов: String и моего собственного пользовательского объекта (назовем его Record ). Например, для одного запроса я мог бы получить следующее:

 { ... "out": "#17:0", "in": { ... }, ... } 

Для другого я мог бы получить:

 { ... "out": { ... }, "in": "#18:2", ... } 

И так далее. Оба могут быть String s, оба могут быть Records , один может быть String а другой – Record , et cetera et cetera. Теперь, когда я десериализую этот JSON с помощью Moshi , у меня было бы два параметра и чтобы удерживать значения их соответствующих ключей; однако, поскольку эти значения не являются фиксированным типом данных, это проще сказать, чем сделать.

Создание нескольких POJO (или «POKO», я думаю, потому, что я использую Kotlin) не будет работать, потому что эти объекты можно найти внутри других объектов JSON и тому подобное. Мне нужен один объект, для которого эти параметры могут принимать переменный тип данных. Итак, как бы я это сделал?

Должен ли я написать пользовательский адаптер в Моши для сериализации / десериализации этих значений? Если да, то как я могу начать писать один, который может назначить определенный тип данных в зависимости от значения параметра? Или есть какая-то функция класса / функции / расширения Kotlin, которую я могу найти / написать, которая может содержать два возможных типа данных?

Если это имеет значение, я также использую Retrofit 2 + RxJava 2, чтобы асинхронно выполнять мои HTTP-вызовы, поэтому, если в этих библиотеках есть какие-либо типы данных или функции, которые облегчают что-то подобное, я все уши.

Даже если кто-то может отвечать только на Java, это нормально, потому что я могу сам конвертировать код. И если я пропущу что-то очевидное, извиняюсь заранее.

Solutions Collecting From Web of "Дезертициализация поля, которое может быть одним из двух типов данных с использованием Moshi"