 It needs to resort to less specialized code because it cannot know what types will go through a method.Such problems can be alleviated by profile-guided optimizations.But even in this case, the generated code cannot be adapted dynamically to the changing runtime profile as a JIT compiler would do.