         
         assert(NSThread.isMainThread(), _fy_MainQueueAssert)
         
-        guard hasUnsetConstraints(constraints, of: views) else {
+        guard hasUnsetConstraints(unsetConstraints, of: views) else {
             views.forEach { view in
                 view.layoutWithFangYuan()
             }

                    }
                }
            } else {
                singleton.settedConstraints.remove(constraint)
            }
        }
    }

    
    func setSettedConstraint(constraint:Constraint) {
        assert(!NSThread.isMainThread(), _fy_noMainQueueAssert)
        storedConstraints.forEach { con in
            if con.to == nil || con.from == nil {
                storedConstraints.remove(con)
            } else if con.to == constraint.to && con.direction == constraint.direction {
                storedConstraints.remove(con)
            }
        }
        storedConstraints.insert(constraint)
    }

    /// 按照程序逻辑，一个 view 最多同时只能在一个方向上拥有一个约束
    func removeDuplicateConstraintOf(view:UIView, at direction: Constraint.Direction) {
        assert(!NSThread.isMainThread(), _fy_noMainQueueAssert)
        unsetConstraints.forEach { con in
            if con.to == nil || con.from == nil {
                unsetConstraints.remove(con)
            } else if con.to == view && con.direction == direction {
                unsetConstraints.remove(con)
            }
        }
    }
    
    func noConstraintCirculationWith(constraint:Constraint) -> Bool {
        assert(!NSThread.isMainThread(), _fy_noMainQueueAssert)
        return unsetConstraints.filter {
            $0 <=> constraint
        }.count == 0
    }
