Try the direct path until we get to an impassable point.
Code is ugly.