title: Why @Nonnull annotation checked at runtime?
body: <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>