             }
         }
 
-        static private let ibInspectableMapping: [String: Attribute] = [
+        static private let ibInspectableMapping: [String: TextAttribute] = [
             "unspecified": .unspecified,
             "top": .top,
             "capheight": .capHeight,

        }

        init(ibInspectableString string: String) {
            self = Attribute.ibInspectableMapping[string] ?? .unspecified
        }

    }

    @IBInspectable public var firstAlignment: String? {
        didSet {
            firstItemAttribute = BonMot.TextAlignmentConstraint.Attribute(ibInspectableString: firstAlignment?.normalized ?? "")
        }
    }

    @IBInspectable public var secondAlignment: String? {
        didSet {
            secondItemAttribute = BonMot.TextAlignmentConstraint.Attribute(ibInspectableString: secondAlignment?.normalized ?? "")
        }
    }

    public private(set) var firstItemAttribute: BonMot.TextAlignmentConstraint.Attribute = .unspecified
    public private(set) var secondItemAttribute: BonMot.TextAlignmentConstraint.Attribute = .unspecified
    private var item1: AnyObject!
    private var item2: AnyObject!


        constant = difference
    }

    private func distanceFromTop(of item: AnyObject, with attribute: TextAttribute) -> CGFloat {
        guard let font = font(from: item) else {
            return 0
        }
