`annotations` was assumed not to be null in `==` and `toString` before.
- it fixes 2 bugs,
- by making the null check only once, perf could only be better