Gson no puede deserializar un tipo de ArrayList genérico utilizando un TypeToken

Tengo un model para Gson con esta estructura:

data class ApiResponse(val isError: String, val errorMessage: String, data: T) 

El campo de data es un tipo genérico. Cuando bash analizar las respuestas de la API, funciona en todos los casos, excepto en los casos en que el tipo genérico de datos es una ArrayList.

Deserializo el JSON así:

 val typeToken = object : TypeToken<SprucedApiResponse< T>>() {}.type Gson().fromJson<SprucedApiResponse<T>>(jsonResponseString, typeToken) 

Si el tipo genérico T es un object personalizado, funciona correctamente. Sin embargo, si T es una ArrayList, entonces aparece este error:

 com.google.gson.internal.LinkedTreeMap cannot be cast to CustomObject 

Intenté usar @JvmSuppressWildcards pero no resuelve el problema.

Este problema definitivamente está relacionado con los generics, ya que Gson puede analizar este TypeToken no genérico ArrayList:

 val typeToken = object : TypeToken<SprucedApiResponse<ArrayList<CustomClass>>>() {}.type 

Por lo tanto, este problema solo parece afectar los types generics de ArrayList.

¿Alguien sabe cómo resolver este problema sin recurrir al análisis del TypeToken desde un método?

Gracias por adelantado.

Solutions Collecting From Web of "Gson no puede deserializar un tipo de ArrayList genérico utilizando un TypeToken"