                                 }
 
                                 if let previousRangeWithoutMatch = rangeWithoutMatch {
-                                    if checkCondition(element: strongSelf) {
+                                    if !bailCondition(element: strongSelf) {
                                         matchFound(element: strongSelf, intersection: previousRangeWithoutMatch)
                                         rangeWithoutMatch = nil
                                     } else {

            }

            if let previousRangeWithoutMatch = rangeWithoutMatch {
                if checkCondition(element: self) {
                    matchFound(element: self, intersection: previousRangeWithoutMatch)
                    rangeWithoutMatch = nil
                } else {


            enumerateLowestElements(
                intersectingRange: targetRange,
                bailIf: { (element) -> Bool in
                    return !element.isBlockLevelElement()
                },
                onMatchNotFound: matchNotFound,
                onMatchFound: matchFound)
