public static void Follow(this IElementsContainer arg, string transition, IDictionary <string, object> withParams, Until until, int countDown) { Assert.IsTrue(countDown > 0, "Didn't match transition:" + transition + " looking for:" + until.s); Element elem; if (transition == null) { elem = (Element)arg; } else { elem = arg.LocateLink(transition); } if (elem == null) { Assert.Fail(string.Format("Didn't find element for transition: {0}", transition)); } if (withParams != null) { using (ExecutionSteps.Log.BeginSection("Apply Parameters:")) { ApplyParams(elem, withParams); } } DomContainer domContainer = DomContainer(arg); Transition(elem); if (until == null || domContainer.Locate(until.s) != null) { return; } domContainer.Follow(transition, withParams, until, countDown - 1); }