             return
         }
         
-        let n0x: CGFloat
-        let n0y: CGFloat
-        let n2x: CGFloat
-        let n2y: CGFloat
+        let n0x: CGFloat.NativeType
+        let n0y: CGFloat.NativeType
+        let n2x: CGFloat.NativeType
+        let n2y: CGFloat.NativeType
         
         if san < 0 {
             n0x = -dy0 / xl0

        let currentPoint = self.currentPoint ?? CGPoint()
        
        // arguments
        let x0 = currentPoint.x
        let y0 = currentPoint.y
        let x1 = points.0.x
        let y1 = points.0.y
        let x2 = points.1.x
        let y2 = points.1.y
        
        // calculated
        let dx0 = x0 - x1

        
        let t = (dx2*n2y - dx2*n0y - dy2*n2x + dy2*n0x) / san
        
        let center = CGPoint(x: CGFloat(x1 + radius.native * (t * dx0 + n0x)),
                             y: CGFloat(y1 + radius.native * (t * dy0 + n0y)))
        let angle = (start: atan2(-n0y, -n0x), end: atan2(-n2y, -n2x))
        
        self.addArc(center: center,
                    radius: radius,
                    startAngle: CGFloat(angle.start),
                    endAngle: CGFloat(angle.end),
                    clockwise: (san < 0))
    }
    
    /// Adds a rectangular path to the current path.
