private void updateCtrlHashes(int ngramDepth) {

		cgraphLeft.clearNGrams();
		cgraphRight.clearNGrams();
		HashSet<CtrlVertex> seen = new HashSet<>();
		// Recalculate (some) control-flow 0-grams, based on matching data-flow in them
		for (DataVertex node : pinMap.keySet()) {
			if (!node.isOp()) {
				continue;
			}
			CtrlVertex cnode = dataToCtrl(node);
			if (!seen.contains(cnode)) {
				CtrlVertex csidekick = dataToCtrl(pinMap.get(node));
				seen.add(cnode);
				int flavor = cnode.uid;			// Flavor to add to the 0-grams
				cnode.setZeroGram(flavor);		// Recompute 0-gram	
				csidekick.setZeroGram(flavor);	// with matching flavor
			}
		}

		cgraphLeft.makeNGrams(ngramDepth);		// Recompute all n-grams, recursively including new 0-grams
		cgraphRight.makeNGrams(ngramDepth);
	}
Update control-flow n-grams with matching info from previous passes, to help
distinguish between similar nodes.
@param ngramDepth is the maximum depth of n-gram being to generate
Ghidra/Features/CodeCompare/src/main/java/ghidra/features/codecompare/graphanalysis/Pinning.java