             
             // Check if we need to update the Y position of the column headers to keep them pinned to the top when scroll view is pull down too far
             if newInsetBounds.minY < 0 {
-                context.invalidColumnHeaderFreezeState = true
+                context.invalidateColumnHeaderFreezeState = true
             }
 
             // Check if we need to update the X position of the row headers to keep them pinned to the left or right when scrolling too far

        
        let context = context as! TableLayoutInvaldationContext
        
        columnHeaderYNeedsUpdate = context.invalidColumnHeaderFreezeState
        rowSupplementaryViewXNeedsUpdate = context.invalidateRowSupplementaryViews
        
        if context.invalidateEverything || context.invalidateDataSourceCounts {

    
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, columnWidthForTableColumn: Int) -> CGFloat
    
    /// If implemented a greater than 0 return value will take precidece over the layouts `rowHeight` property.
    optional func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, rowHeightForTableRow: Int) -> CGFloat
    
    /// If implemented the return value will take precidece over the layouts `rowHeaderHeight` property. Return a greater than 0 value to include a header for this table row.
    optional func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, rowHeaderHeightForTableRow: Int) -> CGFloat
    
    /// If implemented the return value will take precidece over the layouts `rowFooterHeight` property. Return a greater than 0 value to include a footer for this table row.
    optional func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, rowFooterHeightForTableRow: Int) -> CGFloat
}

