         self.isIntersection = isIntersection
     }
 
-    internal func emitTo(_ end: CGPoint, using transition: VertexTransition) -> BezierCurve {
+    func emitTo(_ end: CGPoint, using transition: VertexTransition) -> BezierCurve {
         switch transition {
         case .line:
             return LineSegment(p0: self.location, p1: end)

        self.previous = nil
        self.intersectionInfo.neighbor = nil
    }
}

extension Vertex: Equatable {
    public static func == (left: Vertex, right: Vertex) -> Bool {
        return left === right
    }
}

        list[elementIndex] = v
    }

    private func insertIntersectionVertex(_ v: Vertex, between start: Vertex, and end: Vertex, at t: CGFloat, for element: BezierCurve) {
        assert(start !== end)
        assert(v.isIntersection)
        v.splitInfo = Vertex.SplitInfo(t: t)
