         shapeLayer.path = shapeLayerPath.cgPath
     }
     
-    // MARK: - Context for item
-    
-    fileprivate func contextForItem(_ item: ItemInSuperview) -> Context {
-        let cellFrame = item.cellFrameInSuperview
-        let cellWidth = cellFrame.width
-        let lastCellMinX = floor(item.collectionViewWidth - cellWidth)
-        let minX = floor(cellFrame.minX)
-        let maxX = floor(cellFrame.maxX)
-        
-        let isLastVisibleCell = maxX >= item.collectionViewWidth
-        let isLastVisibleCellButOne = minX < lastCellMinX && maxX > lastCellMinX
-        
-        let isFirstVisibleCell = minX <= 0
-        let isNextAfterFirstVisibleCell = minX < cellWidth && maxX > cellWidth
-        
-        return Context(
-            isFirstCell: selectedSegmentioIndex == 0,
-            isLastCell: selectedSegmentioIndex == segmentioItems.count - 1,
-            isLastOrPrelastVisibleCell: isLastVisibleCell || isLastVisibleCellButOne,
-            isFirstOrSecondVisibleCell: isFirstVisibleCell || isNextAfterFirstVisibleCell,
-            isFirstIndex: selectedSegmentioIndex > 0
-        )
-    }
-    
     // MARK: - Item in superview
     
     fileprivate func itemInSuperview(ratio: CGFloat = 1) -> ItemInSuperview {

    internal struct Points {
        var startPoint: CGPoint
        var endPoint: CGPoint
    }
    
    internal struct Context {
        var isFirstCell: Bool
        var isLastCell: Bool
        var isLastOrPrelastVisibleCell: Bool
        var isFirstOrSecondVisibleCell: Bool
        var isFirstIndex: Bool
    }
    
    internal struct ItemInSuperview {

        
        if let selectedLayer = selectedLayer {
            let item = itemInSuperview()

            let points = Points(
                item: item,
                atIndex: selectedSegmentioIndex,
                allItems: segmentioItems,
