private IEnumerable <IGraphNode> BackwardNodes() { IMaybe <IGraphNode> node = Maybe.Just(_graph.Finish()); do { yield return(node.Value()); node = _previousNodeFor[node.Value()]; } while (node.HasValue()); }