Which node is the destination here?  I'm not sure what node is pointed to by `-offset + 1`.  In an unmerged graph, all the `ReadHeadInfo.offset`s will be 0 so you're just shifting towards the node's FF or FR neighbor.  If that neighbor is also low coverage, then you'll pass to `-offset + 1` again... wouldn't that be `-1 + 1 = 0` so you're just passing it back to its origin (offset=0)?  Why not just use the node's neighbor list and pass the reads along until you get to a node that has higher coverage?

In a merged graph, the kmers in the read may not have nodes in the graph anymore.  Since we're just doing this step after graphbuild, it should be okay but you might want a disclaimer in the header comments.