 
 extension SVGEffectElement {
     
-    fileprivate func visibleBound(_ sources: [SVGEffect.Source: Rect], _ objectBound: Rect) -> Rect? {
+    fileprivate func _visible_bound(_ sources: [SVGEffect.Source: Rect], _ objectBound: Rect) -> Rect? {
         
         guard !region.isNull else { return self.visibleBound(sources) }
         


extension SVGEffect {
    
    fileprivate func accumulatedBound(_ bound: Rect, _ objectBound: Rect) -> Rect {
        
        var accumulated = bound
        
        return self.apply(bound) { (uuid, primitive, list) -> Rect in
            
            let destination_region = primitive.visibleBound(list, objectBound)
            
            accumulated = destination_region?.union(accumulated) ?? accumulated
            
            return destination_region ?? bound
            
        }?.union(accumulated) ?? accumulated
    }
    
    fileprivate func visibleBound(_ bound: Rect, _ objectBound: Rect) -> Rect {
        return self.apply(bound) { $1.visibleBound($2, objectBound) ?? bound } ?? bound
    }
}


        let id = new_name(type)
        var _filter = SDXMLElement(name: "filter", attributes: ["id": id])
        
        visibleBound = effect.visibleBound(visibleBound, objectBound)
        
        if objectBound.width != 0 && objectBound.height != 0 {
            
            let x = 100 * (visibleBound.minX - objectBound.minX) / objectBound.width
            let y = 100 * (visibleBound.minY - objectBound.minY) / objectBound.height
            let width = 100 * visibleBound.width / objectBound.width
            let height = 100 * visibleBound.height / objectBound.height
            
            let _x = floor(x)
            let _y = floor(y)
