@Override
	public void applyHighlights() {

		if (decompilerPanel == null) {
			return; // disposed
		}

		DecompilerController controller = decompilerPanel.getController();
		Function decompiledFunction = controller.getFunction();
		if (function != null && !function.equals(decompiledFunction)) {
			return; // this is a function-specific highlighter and this is not the desired function 
		}

		// This is done by the caller of this method
		// clearHighlights();

		ClangLayoutController layoutModel = decompilerPanel.getLayoutController();
		ClangTokenGroup root = layoutModel.getRoot();

		Map<ClangToken, Color> highlights = new HashMap<>();
		try {
			matcher.start(root);
			gatherHighlights(root, highlights);
		}
		finally {
			matcher.end();
		}

		Supplier<? extends Collection<ClangToken>> tokens = () -> highlights.keySet();
		ColorProvider colorProvider = new MappedTokenColorProvider(highlights);
		decompilerPanel.addHighlighterHighlights(this, tokens, colorProvider);

		clones.forEach(c -> c.applyHighlights());
	}
Creates a copy of this highlighter that is not tracked by this highlighter
@param panel the panel
@return the highlighter
Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/ClangDecompilerHighlighter.java