Cycle detection is currently really crude. All it does is avoiding infinite loops. I'm sure we could do much better.