         refresh()
     }
     
-    open func refresh() {
+    open func refresh(includingSubviews: Bool = false) {
         customizeView()
     }
     

/// A protocol that describes a view that can be customized.
public protocol ViewCustomizable {
    
    /// Refreshes the view's appearance. You should call this method: a) after initialization from code b) after changing the state of the view (e.g. set `isEnabled` to `false`).
    ///
    /// Your custom view can override this method to customize other properties.
    /// You need to call the super implementation at some point during your own `refresh` method.
    func refresh()
    
}


        refresh()
    }
    
    open func refresh(includingSubviews: Bool = false) {
        customizeView()
        if includingSubviews {
            subviews.forEach { $0.refresh(includingSubviews: true) }
        }
    }
    
}
