It is obvious, that it won't work without some kind of specialization. And it probably is not possible without some compiler adjustment. Still, I do not think it is a limitation of language or JVM. We will need to create specialized classes for each of our non-boxing types, but in theory those classes could contain only few lines of code each and could be created for new types. What we need is a way to propagate specialized types through generics without boxing in cases where boxing is not needed.