Recently I encountered an issue with our annotations, that I feel we are
doing the wrong way now.
Specifically I had a method annotated with @Nullable in a base class, and
consequently when looking into subclass' code,
I was presented with a bunch of warnings on dereferencing the object got
from calling that method. However in the subclass
I know that @NotNull is actually the case. I could certainly override the
method with covariant @NotNull annotation, but
I feel this is a wrong way to go, since overriding is a runtime feature,
that should not be used for enforcing static contracts.
Have you ever had such problems, and after all is it really a problem, or
just my imagination?