             }
         }
     }
-    
+
     private func forEachVertexStartingFrom(_ v: Vertex, _ callback: (Vertex) -> Void) {
         var current = v
         repeat {

                let cross = (side1 != side2)
                
                if cross {
                    let wasInside = windingCountImpliesContainment(windingCount, using: fillRule)
                    let c = CGPoint.cross(v2, n2)
                    if c < 0 {
                        windingCount += 1
                    }
                    else if c > 0 {
                        windingCount -= 1
                    }
                    let isInside = windingCountImpliesContainment(windingCount, using: fillRule)
                    v.intersectionInfo.isEntry = wasInside == false && isInside == true
                    v.intersectionInfo.isExit = wasInside == true && isInside == false
                }
                if v.intersectionInfo.isEntry || v.intersectionInfo.isExit {
                    hasCrossing = true
                }

    public struct IntersectionInfo {
        public var isEntry: Bool = false
        public var isExit: Bool = false
        public var nextWinding: Int = 0
        public var neighbor: Vertex? = nil
    }
    public var intersectionInfo: IntersectionInfo = IntersectionInfo()
