Intermediate code is executable on a virtual machine. Hence, source code
that is compiled on a first computing device can be distributed to a
second computing device in an intermediate form as long as the second
computing device has the appropriate virtual machine. In this way, the
compilation can be done without regard to the underlying native processor
on the second computing device. However, the intermediate code loses the
original type information defined in the source code. By determining the
variable types in the intermediate code, the intermediate code can be
converted to a different intermediate language.