         return addSubviewInternal(subview, subviewBlocks, lastBlock)
     }
     
+    // MARK: Private methods
     // These 'internal' methods _should_ be just more overloads of addSubview, but doing it that way makes the compiler crash (XCode 7.2).
-    
     private func addSubviewInternal<SubviewType:View>(subview: SubviewType, _ subviewBlocks: [(SubviewType) -> Void]) -> SubviewType {
         self.addSubview(subview)
         subviewBlocks.forEach{ $0(subview) }


public extension View {
    
    public func addSubview<SubviewType:View>(subviewBlocks: (SubviewType) -> Void ...) -> SubviewType {
        return addSubviewInternal(SubviewType(), subviewBlocks)
    }

        return addSubviewInternal(SubviewType(), subviewBlocks, lastBlock)
    }
    
    // MARK: Add a view with type passed explicitly
    public func addSubview<SubviewType:View>(subviewType: SubviewType.Type, _ subviewBlocks: (SubviewType) -> Void ...) -> SubviewType {
        return addSubviewInternal(SubviewType(), subviewBlocks)
    }
    
    public func addSubview<SubviewType:View>(subviewType: SubviewType.Type, _ subviewBlocks: (SubviewType) -> Void ..., _ lastBlock: (SubviewType, ConstraintMaker) -> Void) -> SubviewType {
        return addSubviewInternal(SubviewType(), subviewBlocks, lastBlock)
    }
    
    // MARK: Add a view with the view instance passed explicitly
    public func addSubview<SubviewType:View>(subview: SubviewType, _ subviewBlocks: (SubviewType) -> Void ...) -> SubviewType {
        return addSubviewInternal(subview, subviewBlocks)
    }
