title: Why does @FunctionalInterface have a RUNTIME retention?
body: <p><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html">Said in Javadoc</a>:</p>
  
  <blockquote>
    <p>If a type is annotated with this annotation type, compilers are
    required to generate an error message unless ...</p>
  </blockquote>
  
  <p>Why isn't <code>SOURCE</code> or <code>CLASS</code> enough, like for <code>@Override</code>.</p>