Move arrow away from the middle of the line in a fermion line

I'm trying to draw the following diagram with the tikz-feynman package.

\documentclass{standalone}
\usepackage{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex [dot, label=180:$x$]   (x)  at (0,0) {};
\vertex [dot, label=0:$x'$]    (y)  at (2,0) {};
\vertex [dot, label=180:$x_1$] (x1) at (0,2) {};
\vertex [dot, label=0:$x_2$]   (x2) at (2,2) {};

\diagram*{
(x1) -- [fermion, half left, out=45, in=135] (x2)
-- [fermion] (x)
-- [fermion] (y)
-- [fermion] (x1),
(x1) -- [photon] (x2),
};
\end{feynman}
\end{tikzpicture}
\end{document}


As you can see, the diagram has two fermion lines that intersect right in the middle, where their arrows are drawn. I would like to move the arrows along the fermion lines, so that the two ones don't overlap. How can I do this?

I would probably introduce a dummy vertex, also to indicate that the lines do not intersect.

\documentclass{standalone}
\usepackage{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex [dot, label=180:$x$]   (x)  at (0,0) {};
\vertex [dot, label=0:$x'$]    (y)  at (2,0) {};
\vertex [dot, label=180:$x_1$] (x1) at (0,2) {};
\vertex [dot, label=0:$x_2$]   (x2) at (2,2) {};
\vertex [empty dot, minimum size=0mm] (dummy) at (1,1) {};
\diagram*{
(x1) -- [fermion, half left, out=45, in=135] (x2)
-- [fermion] (dummy)
-- [fermion] (x)
-- [fermion] (y)
-- [fermion] (dummy)
-- [fermion] (x1),
(x1) -- [photon] (x2),
};
\draw[-,line width=2mm,white] (dummy)++(-0.2cm,-0.2cm) -- ++(0.4cm,0.4cm);
\draw[-,black] (dummy)++(-0.2cm,-0.2cm) -- ++(0.4cm,0.4cm);
\end{feynman}
\end{tikzpicture}
\end{document}


• Nice! I forgot to indicate that the lines don't intersect, I like this solution. – yellon Jan 2 '18 at 15:18