private static CellBase InternalDeepCloneWithColumnsSpanned(
            CellBase cell,
            int columnsSpanned)
        {
            CellBase result;

            if (cell is SlottedCell slottedCell)
            {
                result = new SlottedCell(
                    slottedCell.SlotIdToCellMap.ToDictionary(_ => _.Key, _ => (INotSlottedCell)((NotSlottedCellBase)_.Value).DeepCloneWithColumnsSpanned(columnsSpanned)),
                    slottedCell.DefaultSlotId,
                    slottedCell.Id,
                    columnsSpanned,
                    slottedCell.Details);
            }
            else
            {
                result = cell.DeepCloneWithColumnsSpanned(columnsSpanned);
            }

            return(result);
        }