private void handleReferenceRemoved(DomainObjectChangeRecord record) {
		//
		// Get the affected vertex (if any).  Determine if we have to combine the vertex with
		// the vertex below it (adding a reference creates a new basic block, which creates a new
		// vertex--we may need to reverse that process)
		//
		FGData functionGraphData = controller.getFunctionGraphData();
		FunctionGraph functionGraph = functionGraphData.getFunctionGraph();
		Reference reference = (Reference) record.getOldValue();
		Address toAddress = reference.getToAddress();
		FGVertex destinationVertex = functionGraph.getVertexForAddress(toAddress);
		if (destinationVertex == null) {
			return; // this particular removal doesn't affect our graph
		}

		//
		// How do we know if we can combine this vertex with its parent?  Well, we have some
		// tests that must hold true:
		// -There must be only a fallthrough edge to the affected vertex
		// -The parent vertex must have only one flow--FallThrough
		// -There must not be any other references to the entry of the vertex
		// -There must not be any non-dynamic labels on the vertex
		//
		Graph<FGVertex, FGEdge> graph = functionGraph;
		Collection<FGEdge> inEdgesForDestination = graph.getInEdges(destinationVertex);
		if (inEdgesForDestination.size() == 0) {
			// must be in a dirty state with vertices and edges that don't match reality
			return;
		}

		if (inEdgesForDestination.size() > 1) {
			return;
		}

		FGEdge incomingEdge = inEdgesForDestination.iterator().next();
		FGVertex parentVertex = incomingEdge.getStart();
		Collection<FGEdge> outEdges = graph.getOutEdges(parentVertex);
		if (outEdges.size() > 1) {
			return;
		}

		FlowType flowType = incomingEdge.getFlowType();
		if (!flowType.isFallthrough()) {
			return;
		}

		SymbolTable symbolTable = currentProgram.getSymbolTable();
		AddressSetView vertexAddresses = destinationVertex.getAddresses();
		Address minAddress = vertexAddresses.getMinAddress();

		Symbol primary = symbolTable.getPrimarySymbol(minAddress);
		// if there is a symbol, then the block should not be merged
		if (primary == null) {
			controller.mergeVertexWithParent(destinationVertex);
		}
	}
Returns true when something destructive has happened to the data upon which the graph has
created, like a memory block move.
Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/FGProvider.java