I have a GAE/J server that communicates with my Android client via endpoints.

Sometimes I will send an instance to the client via GCM, rather then having the client request it via endpoints. In this case, I need to do the JSON serialize/de-serialize myself instead of letting endpoints do it for me. 

This is particularly messy on the client. I want to deserialize into the class that was generated by endpoints, so that I can then use the same code to process the new data regardless of whether I received it via endpoints or via GCM. 

I thought that one solution would be to add code to the generated class on the client (e.g. inherit from the generated class), but I find that the class is final and all members are private so working with it is awkward. **I don't suppose there is anything I can set in the annotations that will change that?**

The other solution would be to use the Google java client library to deserialize into the generated class, the same way that endpoints does. Unfortunately, it appears to me that that library is equally inflexible: I would have to get the GCM data into an HttpResponse object so I can call HttpResponse.parseAs( MyGeneratedClass.class ).

**Is there a way to utilize the JSON de-serialzing code of Java client library (so as to deserialize into the generated class which has the @Key annotations) that is more detached from the HTTP request/response code?**