     
     // MARK:- Private Implementation
     
-    private var _colorSpace: NSColorSpace?
-    private var _resolvedThemeColor: NSColor?
-    
     open override class func initialize() {
         _cachedColors = NSCache.init()
         _cachedThemeColors = NSCache.init()

    }
    
    override public var colorSpaceName: String {
        return (resolvedThemeColor?.colorSpaceName)!
    }
    
    override public var colorSpace: NSColorSpace {
        return (resolvedThemeColor?.colorSpace)!
    }
    
    override public var numberOfComponents: Int {
        return (_resolvedThemeColor?.numberOfComponents)!
    }
    
    override public func getComponents(_ components: UnsafeMutablePointer<CGFloat>) {
        _resolvedThemeColor?.usingColorSpace(NSColorSpace.genericRGB)?.getComponents(components)
    }
    
    override public var redComponent: CGFloat {
        return (_resolvedThemeColor?.usingColorSpace(NSColorSpace.genericRGB)?.redComponent)!
    }
    
    override public var greenComponent: CGFloat {
        return (_resolvedThemeColor?.usingColorSpace(NSColorSpace.genericRGB)?.greenComponent)!
    }
    
    override public var blueComponent: CGFloat {
        return (_resolvedThemeColor?.usingColorSpace(NSColorSpace.genericRGB)?.blueComponent)!
    }
    
    override public func getRed(_ red: UnsafeMutablePointer<CGFloat>?, green: UnsafeMutablePointer<CGFloat>?, blue: UnsafeMutablePointer<CGFloat>?, alpha: UnsafeMutablePointer<CGFloat>?) {
        _resolvedThemeColor?.usingColorSpace(NSColorSpace.genericRGB)?.getRed(red, green: green, blue: blue, alpha: alpha)
    }
    
    override public var cyanComponent: CGFloat {
        return (_resolvedThemeColor?.usingColorSpace(NSColorSpace.genericCMYK)?.cyanComponent)!
    }
    
    override public var magentaComponent: CGFloat {
        return (_resolvedThemeColor?.usingColorSpace(NSColorSpace.genericCMYK)?.magentaComponent)!
    }
    
    override public var yellowComponent: CGFloat {
        return (_resolvedThemeColor?.usingColorSpace(NSColorSpace.genericCMYK)?.yellowComponent)!
    }
    
    override public var blackComponent: CGFloat {
        return (_resolvedThemeColor?.usingColorSpace(NSColorSpace.genericCMYK)?.blackComponent)!
    }
    
    override public func getCyan(_ cyan: UnsafeMutablePointer<CGFloat>?, magenta: UnsafeMutablePointer<CGFloat>?, yellow: UnsafeMutablePointer<CGFloat>?, black: UnsafeMutablePointer<CGFloat>?, alpha: UnsafeMutablePointer<CGFloat>?) {
        _resolvedThemeColor?.usingColorSpace(NSColorSpace.genericCMYK)?.getCyan(cyan, magenta: magenta, yellow: yellow, black: black, alpha: alpha)
    }
    
    override public var whiteComponent: CGFloat {
        return (_resolvedThemeColor?.usingColorSpace(NSColorSpace.genericGray)?.whiteComponent)!
    }
    
    override public func getWhite(_ white: UnsafeMutablePointer<CGFloat>?, alpha: UnsafeMutablePointer<CGFloat>?) {
        _resolvedThemeColor?.usingColorSpace(NSColorSpace.genericGray)?.getWhite(white, alpha: alpha)
    }
    
    override public var hueComponent: CGFloat {
        return (_resolvedThemeColor?.usingColorSpace(NSColorSpace.genericRGB)?.hueComponent)!
    }
    
    override public var saturationComponent: CGFloat {
        return (_resolvedThemeColor?.usingColorSpace(NSColorSpace.genericRGB)?.saturationComponent)!
    }
    
    override public var brightnessComponent: CGFloat {
        return (_resolvedThemeColor?.usingColorSpace(NSColorSpace.genericRGB)?.brightnessComponent)!
    }
    
    override public func getHue(_ hue: UnsafeMutablePointer<CGFloat>?, saturation: UnsafeMutablePointer<CGFloat>?, brightness: UnsafeMutablePointer<CGFloat>?, alpha: UnsafeMutablePointer<CGFloat>?) {
        _resolvedThemeColor?.usingColorSpace(NSColorSpace.genericRGB)?.getHue(hue, saturation: saturation, brightness: brightness, alpha: alpha)
    }
    
    override public func highlight(withLevel val: CGFloat) -> NSColor? {
        return resolvedThemeColor?.highlight(withLevel: val)
    }
    
    override public func shadow(withLevel val: CGFloat) -> NSColor? {
        return resolvedThemeColor?.shadow(withLevel: val)
    }
    
    override public func withAlphaComponent(_ alpha: CGFloat) -> NSColor {
        return (resolvedThemeColor?.withAlphaComponent(alpha))!
    }
    
    override public var description: String {

    
    init(with selector: Selector, colorSpace: NSColorSpace!) {
        themeColorSelector = selector
        themeColorSpace = colorSpace
        super.init()
        recacheColor()
        NotificationCenter.default.addObserver(self, selector: #selector(recacheColor), name: .didChangeTheme, object: nil)
