         return true
     }
 
-    public /// Asks the layout item to calculate and return the size that best fits the specified size
+    open /// Asks the layout item to calculate and return the size that best fits the specified size
     ///
     /// - Parameter size: The size for which the view should calculate its best-fitting size
     /// - Returns: A new size that fits the receiver’s content
     func sizeThatFits(_ size: CGSize) -> CGSize {
-        return scheme.snapshot(for: bounds).snapshotFrame.distanceFromOrigin
-    }
+        let sourceRect = CGRect(origin: .zero, size: size)
+        var result = scheme.snapshot(for: insetAnchor?.constrained(sourceRect: sourceRect, by: .zero) ?? sourceRect).snapshotFrame.distanceFromOrigin
+        result.width += contentInsets.right
+        result.height += contentInsets.bottom
+        return result
+    }
+}
+extension StackLayoutGuide: CustomDebugStringConvertible, CustomStringConvertible {
+    public var debugDescription: String { return items.debugDescription }
+    public var description: String { return items.description }
 }
 #if os(iOS) || os(tvOS)
 extension StackLayoutGuide where Parent: UIView {

    /// - Returns: Added layer
    @discardableResult
    func add<L: CALayer>(_ type: L.Type) -> L? {
        guard let superItem = ownerItem else { return nil }

        let layer = build(type)
        superItem.addSublayer(layer)

//        }
    }
    /// External representation of layout entity in coordinate space
    open override var frame: CGRect {
        set {
            if newValue != frame {
                super.frame = newValue
