         }
     }
 
-    open func layout() {
+    open override func layout(in rect: CGRect) {
         if isItemLoaded {
-            itemLayout.layout(in: frame)
+            itemLayout.layout(in: rect)
         }
     }
 }

//            }
//        }
    }
    /// External representation of layout entity in coordinate space
    open override var frame: CGRect {
        set {
            if newValue != frame {
                super.frame = newValue
                bounds = CGRect(origin: .zero, size: newValue.size)
                /// uses frame because LayoutGuide is not container for items, if bounds has origin not zero (such as UIScrollView) or size need converting coordinates
                scheme.layout(in: insetAnchor?.constrained(sourceRect: newValue, by: .zero) ?? newValue)
            }
        }
        get { return super.frame }
    }
//    /// Internal coordinate space of layout entity
//    public override var bounds: CGRect

    fileprivate func removeItem(_ item: LayoutItem) -> Bool {
        guard let index = items.index(where: { $0 === item }) else { return false }
        
        items.remove(at: index)
        return true
    }

    open /// Asks the layout item to calculate and return the size that best fits the specified size

    open func didAddToOwner() {
        // subclass override
    }

    open func layout(in rect: CGRect) {
        // subclass override
    }

    open func contentRect(forFrame frame: CGRect) -> CGRect {
        return CGRect(origin: .zero, size: frame.size)
    }

    internal func layout() { layout(in: layoutFrame) }
}
#if os(iOS) || os(tvOS)
public extension LayoutGuide where Super: UIView {
