public bool Matches(Element element) { bool ret = false; Element currentElement = element; for (int i = _simpleSelectors.Count - 1; i >= 0;) { SimpleSelector currentSelector = _simpleSelectors[i]; ret = currentSelector.Matches(currentElement); if (ret) { currentElement = currentElement.Parent; i--; } else { if (i == _simpleSelectors.Count - 1 || currentElement.Parent == null) { break; } else { currentElement = currentElement.Parent; } } } return(ret); }