Here `@CheckForNull` is appropriate on the parameter (the method must check for it being null) and `@Nullable` is appropriate on the return type (the caller may or may not need to check for a null value, depending on whether the parameter was known to be non-null or not). At least that is my understanding of the meaning of these annotations.

(Generally I dislike methods using `@Nullable`; would be safer to use `@Nonnull` on both parameter and return type, and have callers unsure of null status be made to call the method only conditionally. But that is not an option when the historical behavior is `@Nullable`.)