  We consider the problem of finding a maximum size triangle-free $2$-matching
in a graph $G$. A $2$-matching is any subset of the edges such that each vertex
is incident to at most two edges from the subset. We present a fast
combinatorial algorithm for the problem. Our algorithm and its analysis are
dramatically simpler than the very complicated result by Hartvigsen from 1984.
  In the design of this algorithm we use several new concepts. It has been
proven before that for any triangle-free $2$-matching $M$ which is not maximum
the graph contains an $M$-augmenting path, whose application to $M$ results in
a bigger triangle-free $2$-matching. It was not known how to efficiently find
such a path. A new observation is that the search for an augmenting path $P$
can be restricted to so-called {\em amenable} paths that go through any
triangle $t$ contained in $P \cup M$ a limited number of times. To find an
augmenting path that is amenable and hence whose application does not create
any triangle we forbid some edges to be followed by certain others. This
operation can be thought of as using gadgets, in which some pairs of edges get
disconnected. To be able to disconnect two edges we employ {\em half-edges}. A
{\em half-edge} of edge $e$ is, informally speaking, a half of $e$ containing
exactly one of its endpoints. This is another novel application of half-edges
which were previously used for TSP and other matching problems. Additionally,
gadgets are not fixed during any augmentation phase, but are dynamically
changing according to the currently discovered state of reachability by
amenable paths.
