     }
     
     /**
- 
+        Deactives all the active `Attributes` within the node and
+        clears all the persisted ones
      */
     func clear() {
         self.deactivate(attributes: self.activeAttributes)

#endif

/**
 
 */
private enum NodeAttribute {
    
    case Left, Right, Center, Dimension
    
}

/**
 
 */
internal class Node {
    
    ///
    private(set) var left: Attribute?
    
    ///
    private(set) var right: Attribute?
    
    ///
    private(set) var center: Attribute?
    
    ///
    private(set) var dimension: Attribute?
    
    ///
    private(set) var inactiveAttributes: [Attribute] = []
   
    ///
    internal var activeAttributes: [Attribute] {
        return [self.left, self.right, self.center, self.dimension].flatMap { $0 }
    }
    
    /**
 
     */
    func add(attribute attribute: Attribute) -> [NSLayoutConstraint] {
        guard attribute.shouldInstall() else {

    }
    
    /**
        Deactivates the `NSLayoutConstraints` for the `Attributes`
        given. Also nullifies the `Subnodes` for those `Attributes`
        - parameter attributes: `Attributes` to be deactivated
     */
    func deactivate(attributes attributes: Attribute?...) {
        self.deactivate(attributes: attributes.flatMap { $0 })
    }
    
    /**
        Deactivates the `NSLayoutConstraints` for the `Attributes`
        given. Also nullifies the `Subnodes` for those `Attributes`
        - parameter attributes: `Attributes` to be deactivated
     */
    func deactivate(attributes attributes: [Attribute]) {
        var layoutConstraints: [NSLayoutConstraint] = []
