private static String convertAnnotationSymbolToAddress(String[] annotationParts, String rawText,
			Program program) {
		if (annotationParts.length <= 1) {
			return null;
		}

		if (program == null) { // this can happen during merge operations
			return null;
		}

		Address address = program.getAddressFactory().getAddress(annotationParts[1]);
		if (address != null) {
			return null; // nothing to do
		}

		String originalValue = annotationParts[1];
		List<Symbol> symbols = getSymbols(originalValue, program);
		if (symbols.size() != 1) {
			// no unique symbol, so leave it as string name
			return null;
		}

		Address symbolAddress = symbols.get(0).getAddress();
		return rawText.replaceFirst(Pattern.quote(originalValue), symbolAddress.toString());
	}
Split the given text into parts where the returned list contains either a String or 
an Annotation

@param text the text to parse
@param fixerUpper a function that is given a chance to convert an Annotation into a new one
@param program the program
@return a list that contains a mixture String or an Annotation entries
Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/CommentUtils.java