You are right, But it actually does not answer the question properly,
The complete code is like below, shainaz is my friend.
So, here my question is even if the user supplies the same value as in m1(), then based on your explanation, it should cause the error.
As it is not throwing in m1().
So, as per me there is something to do with the interpretation of this in JVM, where JVM says, if the value is expected to come at runtime, then it falls in your explanation.