Gson deserializa json con diferentes tipos de valores

Estoy tratando de deserializar unJSONArray con Gson, uno puede variar el tipo de valores, el valor "in_wanted" puede ser unboolean o unJSONObject.

in_wanted asboolean:

{
"movies": [
        {
            "title": "example boolean",
            "in_wanted": false
        }
    ]           
}

in_wanted asJSONObject:

{
"movies": [
        {
            "title": "example object",
            "in_wanted": {
                "profile": {
                    "value": false
                }
            }
        }
    ]           
}

Necesito el objeto siempre que esté disponible y necesito un deserializador para devolver null cuando el valor de "in_wanted" sea un valor booleano. ¿Cuál sería la mejor manera de hacer esto con Gson?

Respuestas a la pregunta(2)

Su respuesta a la pregunta