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

        refresh()
    }
    
    open func refresh() {
        customizeView()
    }
    

/// A protocol that describes a view that can be customized.
public protocol ViewCustomizable {
    
    /// Refreshes the view's appearance. You should call this method after: a) creating a view programmatically b) changing the state of a view c) changing the style of a view.
    ///
    /// 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.
    ///
    /// - Parameter includingSubviews: A `Bool` value that indicates whether the view's subviews (and its subviews' subviews...) should also be refreshed.
    func refresh(includingSubviews: Bool)
    
}

