I have a figure with open (white) arrow heads. Paths that I draw might overlap with arrow heads that were drawn earlier by TikZ and therefore are placed in the foreground. I do not like how this looks and I would like all arrow heads to be placed on the foreground so that no paths are placed on top of the arrow heads.
This description is vague, but with the MWE it hopefully makes sense.
MWE
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat = newest}
\usetikzlibrary{arrows.meta}
\tikzset{%
state/.style = {%
draw, circle, minimum size = 4, inner sep = 0, fill = black
}%
}%
\tikzset{%
dashedarrow/.style = {%
draw, densely dashed, > = {Latex[width = 1.7mm, length = 2.2mm, open, fill = white]}, ->
}%
}%
\begin{document}%
\begin{tikzpicture}%
\node[state] (0) at (0,0) {};
\node[state] (1) at (1,0) {};
\node[state] (2) at (0,1) {};
\path[dashedarrow] (1) edge[bend left = 20] (2);
\path[dashedarrow] (2) edge[bend left = 20] (0);
\end{tikzpicture}%
\end{document}%
The MWE produces
By simply changing the order of the two \path[dashedarrow] ... lines I get the result that I want:
However, there is no guarantee that this solution works when I increase the number of arrows: there might not exist an order for which each arrow head is in the foreground.
Is there a way in which I can force all arrow heads to be drawn on the foreground such that nothing will be drawn over them? You can assume that the arrow heads are not drawn so close to each other that they might touch or overlap.




