Gson не может десериализовать общий тип ArrayList, используя TypeToken

У меня есть модель для Gson с этой структурой:

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

Поле data является общим типом. Когда я пытаюсь проанализировать ответы API, он работает во всех случаях, кроме тех, где тип данных является ArrayList.

Я десериализую JSON следующим образом:

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

Если общий тип T является обычным объектом, он работает правильно. Однако, если T является ArrayList, тогда я получаю эту ошибку:

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

Я пытался использовать @JvmSuppressWildcards но это не решает проблему.

Эта проблема, безусловно, связана с дженериками, поскольку Gson может анализировать этот не общий шаблон ArrayList на основе TypeToken:

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

Следовательно, эта проблема, похоже, влияет только на типичные типы ArrayList.

Кто-нибудь знает, как решить эту проблему, не прибегая к синтаксическому анализу TypeToken из метода?

Заранее спасибо.