I also had problems with GSON complaining about casting LinkedTreeMaps.
The answer provided by Alexis and the comment by Aljoscha explains why the error occurs; "Generics on a type are typically erased at runtime." My issue was that my code worked when I ran it normally, but using ProGuard caused code to be stripped that was vital to casting.
You can follow Alexis's answer and more clearly define the cast and that should fix the problems. You can also add the ProGuard rules given by Google (simply doing this cleared the issue up for me).
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
##---------------End: proguard configuration for Gson ----------
Moral of the Story: Always check to see what ProGuard rules you need.