title: How to use FindBugs’ @CheckForNull, @Nonnull and @Nullable annotations correctly
body: <p>I would like to formally annotate my function signatures to clarify their contracts—especially if <code>null</code> params and return values are permitted or prohibited—in a way that FindBugs’ static code analysis tool (and maybe other) can make use of it.</p>
  
  <p>There are two packages (<code>annotations.jar</code> and <code>jsr305.jar</code>) with four annotations each to achieve this, as well as the option not to put an annotation at all.</p>