Hey Peter,
yes, that's exactly what I mean - revisiting already visited nodes. Reasoning behind it is as follows: I am working on a complex story telling engine which uses graph of Labeled Directed Edges as an in memory storage for a story itself. Your example from point #2 is valid in my case - if traversal ends in a node in which multiple paths end, but nothing goes out, I consider story to be complete.
However, my overlay logic contains more complexities (conditions that decide on branchings, user context and so on) so it is possible that sometimes traversal is possible in some directions, and sometimes it's not (as per that EdgeFilter thing I have mentioned earlier).
All this is working and ScalaGraph proved to be a good traversal tool for scenario above. However, now I am exploring possibility that story may end up in a branch where it circles several times before it proceeds out of the circle given certain condition and that is the reason why I'm asking about revisiting nodes in a first place. Take a look at this graph:
1~+>2, 2~+>3, 3~+>4, 4~+>2, 4~+>5
Story ends in node 5, but it is also possible to go back from 4 to 2 (according to some condition employed by story logic and the edge filtering). My need is to allow for such cyclical traversals any number of times until higher level context changes in such a way that 4~+5 becomes "possible" and 4~+2 "impossible". I put "possible" and "impossible" in quotes because those edges are always in memory, but EdgeFilter might not decide they are traversable.
I hope this makes my case clear.
Bruno