I think you are misunderstanding the point of a serialization util, your best best is to use the polymorphic characteristics of the language to implement the behavior you are looking for.
As per
GSON goals: "
deep inheritance hierarchies and extensive use of generic types", so your best bet is to implement your own hierarchy and use GSON to serialize/deserialize.
Remember, it is important to separate object responsibilities, keep in mind that an on object can only have 1 inheritance hierarchy which suggests that it should only have 1 responsibility. A better idea would be break up the logic into smaller objects that collaborate with each other or put it differently, polymorphism is all or nothing proposition.
Regards !