Use Snapper, LineOnLineOverlayer and Tester (test for _overlaps=1)
You snap undershoots/undershorts, line on line the original and the snapped line (you need to create some unique identifiers for the lines to use GroupBy in LOLO) then test for features witch overlap a single time (the undershoots).
Alternatively, I use the TopologyBuilder and then test for nodes with only one edge (aka dangle nodes) and merge them back on to the edges (lines) based on edge id. There are then various things I can test these dangle lines for.
If they are very short, they are probably an overshoot.
A NeighbourFinder will give the distance and direction to nearby lines. This allows more granular logic in determining whether a dangle line is a true undershoot or a legitimate dead end. For example if the line is a residential street, and the only other line within tolerance is a closed access highway, chances are, that the residential line is not supposed to connect.