onAccent
Black or white, whichever stays legible on accent — and a parameter rather than a derivation, because a caller may not be free to move the accent.
The default is contrastOn, which is what Windows Phone did and stays what this library does; white on a cyan tile is the authentic answer at 2.90:1 and it is not changed here. What the parameter adds is the second lever B-11's policy needs and did not have: accessible() reaches AA by walking the accent towards black or white, which is the right move for a caller whose accent is negotiable and the wrong one for an application arriving with a brand's fixed hex. For that caller the accent stays and the ink is what has to move.
Carried by copy() rather than recomputed, and that is safe rather than lucky. accessible() walks the accent away from the text colour on it — darker when the text is white, lighter when it is black — so the walk cannot carry an accent across the 0.5 luminance threshold that would flip the ink. Checked for all twenty: none flips.