Why @Nonnull annotation checked at runtime?
<p>I have a function with following signature</p>

<pre><code>public static String myFunction(@Nonnull String param)
</code></pre>

<p>When I call it with param as null, I get the following exception:</p>

<pre><code>Caused by: java.lang.IllegalArgumentException: Argument for @Nonnull parameter 'param' of com/MyClass.myFunction must not be null
    at com.MyClass.$$$reportNull$$$0(MyClass.java) 
</code></pre>

<p>javax.annotation.Nonnull supposed not to be checked at runtime.</p>

<p>Who actually throws the exception and why?</p>

<p>P.S. I run Tomcat server in debug mode from IntelliJ IDEA 2016.3 with Oracle JDK 1.8.0_102</p>