@Override
	public CellRec remove( CellRec cell )
	{
		int first = cell.getColFirst();
		int last = cell.getColLast();

		validate( cell.getColNumber(), first, last );

		//
		// While we double loop on this, I want the data structure usage safety over any potential performance issues right now.
		// If remove() is being invoked for a Cell that doesnt exist in the data structure, that implies an incorrect usage and it should
		// be fixed.
		//

		for( int col = first; col <= last; col++ )
		{
			SortedSet<CellRec> colCells = cells.get( col );
			if( (colCells == null) || !colCells.contains( cell ) )
			{
				// Perhaps the cell was modified before being removed from here.
				String msg = String.format( "Attempt to remove cell '%s' that doesn't exist in Column %d", cell, col );
				log.warn( msg );
				throw new IllegalArgumentException( msg );
			}
		}

		for( int col = first; col <= last; col++ )
		{
			SortedSet<CellRec> colCells = cells.get( col );
			colCells.remove( cell );
		}

		log.debug( "Removed cell '{}' from Cols {}-{}", cell, first, last );
		return cell;
	}