             }
         }
 
-        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!


    ///   - attr2: The attribute of the view for the right side of the constraint equation.
    /// - Returns: A constraint object relating the two provided views with the
    ///            specified relation and attributes.
    public static func with(item view1: AnyObject, attribute attr1: TextAttribute, relatedBy relation: NSLayoutRelation, toItem view2: AnyObject, attribute attr2: TextAttribute) -> TextAlignmentConstraint {
        let constraint = TextAlignmentConstraint(
            item: view1,
            attribute: attr1.layoutAttribute,
