I did some tests but i've not found a solution to this problem.
I've got a sample project to show my tests if anyone is interested.
To summarize I understand that if we have an rpc service with this
kind of signature:
public <R extends Result> R execute(Action<R> action);
then "code splitting" loose all it's advantage, in fact it will put in
the same fragment
the loading of the rpsService and all the possible Action and Result
so if you have a big application with potentially lots of Action and
Results implementations,
this fragment will eventually become too big and you can't do anything
to split it.
To me this seems to be a problem with the gwt compiler that didn't
fully understand the semantic of the signature:
public <R extends Result> R execute(Action<R> action)
seems that it didn't rely on the constraint that the possible types
returned from a call with
a Action<R> parameter are only subtypes of R and not subtypes of
Result.