     }
     
     @inlinable
-    func _offset(_ a: Double, _ calback: (ClosedRange<Double>, CubicBezier<Point>) throws -> Void) rethrows {
+    func _offset(_ a: Double, _ c: Double, _ calback: (ClosedRange<Double>, CubicBezier<Point>) throws -> Void) rethrows {
         
         var s = 0.0
         

        }
        
        if t.count == 0 {
            try _offset(a, calback)
        } else {
            t.sort()
            for ((s, t), segment) in zip(zip(CollectionOfOne(0).concat(t), t.appended(1)), self.split(t)) {
                try segment._offset(a) { try calback($0.lowerBound * (t - s) + s ... $0.upperBound * (t - s) + s, $1) }
            }
        }
    }

            guard let q2 = self._offset_point(a, t) else { return }
            guard let q3 = self._offset_point(a, u3) else { return }
            
            let _c = (1 - c) / 6
            let m0 = q2 - q0
            let m1 = q3 - q1
            
            try calback(s...t, CubicBezier(q1, q1 + _c * m0, q2 - _c * m1, q2))
            
            s = t
        }
