Flyspell marks for example the second "AND" in "an AND split and AND join" as a duplicate.
This seems to be deliberate: in line 1153 of flyspell.el (on current emacs-26 branch) flyspell-word-search-backward is called with IGNORE-CASE set to t.
I don't understand this: if it's not the same case, it's probably deliberate, no?
I checked that simply removing this `t' argument makes doublon detection work as I'd expect: "AND AND", "and and" and "And And" are all marked as doublons, but anything that's not the same case isn't.
I'm using Emacs 26.1.
--