         #endif
     }
     
-    func prepareForInterfaceBuilder() {
+    public func prepareForInterfaceBuilder() {
         if nonPrivateSubviews.count == 1 {
             // Used as a reference container
             view.backgroundColor = .clear

        }
    }
    
    func setValue(_ value: Any?, forKeyPath keyPath: String) {
        #if TARGET_INTERFACE_BUILDER
            guard let subview = value as? UIView else { return }
            SubviewsCopier.store(subview: subview, forKeyPath: keyPath, of: view)


public struct IBNibLoader<NibLoadableView: NibLoadable> where NibLoadableView: UIView {
    
    public func awakeAfter(using aDecoder: NSCoder, _ superMethod: @autoclosure () -> Any?) -> Any? {
        guard nonPrivateSubviews.isEmpty else { return superMethod() }
        
        let nibView = type(of: view).fromNib()
