protected mxCellState[] getPreviewStates()
	{
		mxGraph graph = graphComponent.getGraph();
		Collection<mxCellState> result = new LinkedList<mxCellState>();

		for (Object cell : movingCells)
		{
			mxCellState cellState = graph.getView().getState(cell);

			if (cellState != null)
			{
				result.add(cellState);

				// Terminates early if too many cells
				if (result.size() >= threshold)
				{
					return null;
				}

				if (isContextPreview())
				{
					Object[] edges = graph.getAllEdges(new Object[] { cell });

					for (Object edge : edges)
					{
						if (!graph.isCellSelected(edge))
						{
							mxCellState edgeState = graph.getView().getState(
									edge);

							if (edgeState != null)
							{
								// Terminates early if too many cells
								if (result.size() >= threshold)
								{
									return null;
								}

								result.add(edgeState);
							}
						}
					}
				}
			}
		}

		return result.toArray(new mxCellState[result.size()]);
	}