                 let fsz = v.sizeThatFits(fit)
                 let h = fsz.height
                 let p1 = {
+                    guard v.hidden == false else { return .rigid(length: 0) }
                     switch p {
-                    case .rigid:    return SilentBoxPartition.rigid(length: h)
-                    case .soft:     return SilentBoxPartition.soft(proportion: h)
+                    case .rigid:    return .rigid(length: h)
+                    case .soft:     return .soft(proportion: h)
                     }
                 }() as SilentBoxPartition
                 ps1.append(p1)

                let fsz = v.sizeThatFits(fit)
                let w = fsz.width
                let p1 = {
                    switch p {
                    case .rigid:    return SilentBoxPartition.rigid(length: w)
                    case .soft:     return SilentBoxPartition.soft(proportion: w)
                    }
                }() as SilentBoxPartition
                ps1.append(p1)

public final class DivisionPlaceholderView: UIView {
    /// We need to store explicit size to get reliable result
    /// because `frame` will be changed after layout.
    public var holdingSize: CGSize = CGSize.zero {
        didSet {
            setNeedsLayout()
        }
    }
    convenience init(holdingSize: CGSize) {
        self.init()
        self.holdingSize = holdingSize
    }
    public override func sizeThatFits(size: CGSize) -> CGSize {
        return holdingSize
