protected JComponent createOutOfMemoryToolTipComponent(ProgramLocation location) {

		/*
		 		Format

		 	Address: ram:1234
		 	Address not in memory


		 		Or, when multiple symbols at destination


		 	Address: ram:1234
		 	Symbols (3):
		 		foo
		 		bar
		 		baz
		 	Address not in memory

		 */

		String newline = HTMLUtilities.HTML_NEW_LINE;
		StringBuilder buffy = new StringBuilder(HTML);
		buffy.append("Address: ");
		String addressString = location.getAddress().toString(true, false);
		addressString = HTMLUtilities.friendlyEncodeHTML(addressString);
		buffy.append(addressString);
		buffy.append(newline);

		Program p = location.getProgram();
		SymbolTable st = p.getSymbolTable();
		Symbol[] symbols = st.getSymbols(location.getAddress());

		if (symbols.length > 1) {
			buffy.append("Symbols (").append(symbols.length).append("): ").append(newline);
			String pad = HTMLUtilities.spaces(4);
			SymbolInspector inspector = new SymbolInspector(tool, null);
			for (Symbol s : symbols) {
				ColorAndStyle style = inspector.getColorAndStyle(s);
				String name = s.getName(true);
				name = pad + HTMLUtilities.friendlyEncodeHTML(name);
				String html = style.toHtml(name);
				buffy.append(html).append(newline);
			}
		}

		String message = "Address not in memory";
		message = HTMLUtilities.italic(message);
		message = HTMLUtilities.colorString(FG_COLOR_NOT_IN_MEMORY, message);
		buffy.append(message);
		toolTip.setTipText(buffy.toString());
		return toolTip;
	}
initializeLazily() should get called to try to get the CodeFormatService and create the panel
the first time we want to use the panel.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/hover/AbstractReferenceHover.java