public mxICellOverlay removeCellOverlay(Object cell, mxICellOverlay overlay)
	{
		if (overlay == null)
		{
			removeCellOverlays(cell);
		}
		else
		{
			mxICellOverlay[] arr = getCellOverlays(cell);

			if (arr != null)
			{
				// TODO: Use arraycopy from/to same array to speed this up
				List<mxICellOverlay> list = new ArrayList<mxICellOverlay>(
						Arrays.asList(arr));

				if (list.remove(overlay))
				{
					removeCellOverlayComponent(overlay, cell);
				}

				arr = list.toArray(new mxICellOverlay[list.size()]);
				overlays.put(cell, arr);
			}
		}

		return overlay;
	}