 }
 
 
-
+/**
+ Handle constraints involving arrays
+ e.g:
+
+ view1 |=| [view2.m_bottom, view3.m_left]
+
+ [view1.m_top, view1.m_left] |=| [view2.m_bottom, view3.m_left]
+
+*/
 public func |=|(lhs: [MortarAttributable], rhs: [MortarAttributable]) -> MortarConstraint {
     return MortarConstraint(targetArray: lhs.map { $0.m_intoAttribute() },
                             sourceArray: rhs.map { $0.m_intoAttribute() },

                               relation: .LessThanOrEqual)
}


public func |=|(lhs: [MortarAttributable], rhs: MortarTuple) -> MortarConstraint {
    return MortarConstraint(targetArray: lhs.map { $0.m_intoAttribute() },
                            sourceTuple: rhs,




/**
 Handle the basic case of joining a Mortar Attribute with a tuple
 e.g:

 view1.m_size |=| (50, 50)

*/
public func |=|(lhs: MortarAttribute, rhs: MortarTwople) -> MortarConstraint {
    return MortarConstraint(target: lhs, source: MortarConvertTwople(rhs), relation: .Equal)
}
