         }
     }
     
-    fileprivate var cache = Cache()
     fileprivate var components: [Component]
     
     public var baseTransform : SDTransform = SDTransform(SDTransform.Identity()) {

            baseTransform = newValue * translate.inverse * rotate.inverse * scale.inverse * translate
        }
    }
    
    public init() {
        self.components = []

    }
}

extension Shape {
    
    class Cache {
        
        var originalBoundary: Rect?
        var boundary: Rect?
        var identity : Shape?
        
        var area: Double?
        
        var table: [String : Any]
        
        init() {
            self.originalBoundary = nil
            self.boundary = nil
            self.identity = nil
            self.area = nil
            self.table = [:]
        }
        init(originalBoundary: Rect?, boundary: Rect?, table: [String : Any]) {
            self.originalBoundary = originalBoundary
            self.boundary = boundary
            self.identity = nil
            self.area = nil
            self.table = table
        }
    }
    
}

extension Shape.Component {
    
    class Cache {
        
        var spaces: RectCollection?
        var boundary: Rect?
