         if layoutConstraint1.secondAttribute != layoutConstraint2.secondAttribute {
             return false
         }
+        if layoutConstraint1.relation != layoutConstraint2.relation {
+            return false
+        }
+        if fabs(layoutConstraint1.multiplier - layoutConstraint2.multiplier) > 0.001 {
+            return false
+        }
+        if fabs(layoutConstraint1.constant - layoutConstraint2.constant) > 0.001 {
+            return false
+        }
+        if fabs(layoutConstraint1.priority - layoutConstraint2.priority) > 0.001 {
+            return false
+        }
         if !isSameIdentifier(layoutConstraint1.identifier, layoutConstraint2.identifier) {
             return false
         }

    }
    
    private func isSameConstraintFlipped(layoutConstraint1: NSLayoutConstraint, _ layoutConstraint2: NSLayoutConstraint) -> Bool {
        if !viewsEqual(layoutConstraint1.firstItem, layoutConstraint2.secondItem) {
            return false
        }
        if !viewsEqual(layoutConstraint1.secondItem, layoutConstraint2.firstItem) {
            return false
        }
        if layoutConstraint1.firstAttribute != layoutConstraint2.secondAttribute {
            return false
        }
        if layoutConstraint1.secondAttribute != layoutConstraint2.firstAttribute {
            return false
        }
        if !isSameIdentifier(layoutConstraint1.identifier, layoutConstraint2.identifier) {
            return false
        }
        return true
    }

    private func printConstraints(constraints: [NSLayoutConstraint]) {

    
    func verifyConstraints(log log: Bool = false) {
        // Force constraints to be created
        uiStackView.setNeedsUpdateConstraints()
        uiStackView.updateConstraintsIfNeeded()
        uiStackView.setNeedsLayout()
        uiStackView.layoutIfNeeded()
        
        tzStackView.setNeedsUpdateConstraints()
        tzStackView.updateConstraintsIfNeeded()
        tzStackView.setNeedsLayout()
        tzStackView.layoutIfNeeded()

        if log {
