Changes to the body of a method or constructor do not break compatibility with pre-existing binaries.
We note that a compiler cannot inline expand a method at compile time unless, for example, either:
private
to its class
The keyword final
on a method does not mean that the method can be safely
inlined; it only means that the method cannot be overridden. Unless the compiler
has extraordinary knowledge, it is still possible that a new version of that method
will be provided at link time.
In general we suggest that Java implementations use late-bound (run-time) code generation and optimization.