         return constraintsForAnchors(anchor, constant: c, priority: priority, builder: constraintBuilder)
     }
 
-    private subscript (edge: LayoutEdge) -> NSLayoutAnchor<AnyObject> {
+    private subscript (edge: LayoutEdge) -> LayoutAnchorType {
         switch edge {
         case .top:      return top
         case .leading:  return leading

    return LayoutExpression(constant: lhs, priority: rhs)
}

public func ~ <T: AnchorType>(lhs: T, rhs: UILayoutPriority) -> LayoutExpression<T> {
    return LayoutExpression(anchor: lhs, priority: rhs)
}

public func ~ <T: AnchorType>(lhs: LayoutExpression<T>, rhs: UILayoutPriority) -> LayoutExpression<T> {
    var expr = lhs
    expr.priority = rhs
    return expr


import UIKit

public protocol LayoutAnchorType {}
extension NSLayoutAnchor : LayoutAnchorType {}

// MARK: - Equality Constraints

