private void addFunctionSignatureHighlight(String text, int cursorTextOffset,
			HashMap<VTMarkupType, VTMarkupItem> typeMap, ArrayList<Highlight> highlightList) {
		VTMarkupItem markupItem = typeMap.get(FunctionSignatureMarkupType.INSTANCE);
		if (markupItem != null) {
			int textLength = text.length();

			int leftParenIndex = text.indexOf("(");
			int rightParenIndex = text.indexOf(")");

			int startReturnIndex = 0;
			int endCallingConventionIndex = textLength - 1;
			if (leftParenIndex >= 0) {
				int beforeNameIndex = getLastIndexOf(text, leftParenIndex - 1, ' ');
				if (beforeNameIndex >= 0) {
					endCallingConventionIndex = beforeNameIndex - 1;
				}
			}
//			if (text.startsWith("inline ", startReturnIndex)) {
//				Color highlightColor = getMarkupBackgroundColor(cursorTextOffset, markupItem, 0, 5);
//				Highlight highlight = new Highlight(0, 5, highlightColor);
//				highlightList.add(highlight);
//
//				startReturnIndex += 7;
//			}
//			if (text.startsWith("noreturn ", startReturnIndex)) {
//				startReturnIndex += 9;
//			}

			if (startReturnIndex >= 0 && endCallingConventionIndex >= 0) {
				Color highlightColor =
					getMarkupBackgroundColor(cursorTextOffset, markupItem, startReturnIndex,
						endCallingConventionIndex);
				Highlight highlight =
					new Highlight(startReturnIndex, endCallingConventionIndex, highlightColor);
				highlightList.add(highlight);
			}

			if (leftParenIndex == -1) {
				return; // No left parenthesis or parameters showing.
			}
			int startParamsIndex = leftParenIndex + 1;
			if (startParamsIndex >= textLength) {
				return; // No parameters showing.
			}
			int endParamsIndex = textLength;
			if (rightParenIndex >= 0) {
				endParamsIndex = rightParenIndex - 1;
			}
			if (endParamsIndex <= startParamsIndex) {
				return; // No parameters showing.
			}

			// Use the following to get just the data types.
			// Otherwise use the highlight below the while loop to get both data types and names 
			// in the function signature.
//			int nextParamIndex = startParamsIndex;
//			while (nextParamIndex >= 0) {
//				int dtStartIndex = nextParamIndex;
//				int dtEndIndex = endParamsIndex - 1;
//				int commaIndex = text.indexOf(',', nextParamIndex);
//				int preNameIndex = -1;
//				if (commaIndex == -1) {
//					// Check for VarArgs.
//					if (text.startsWith("...)", dtStartIndex)) {
//						dtEndIndex = dtStartIndex + 2; // gets all 3 dots for the varArgs.
//					}
//					else {
//						// process last visible parameter.
//						if (rightParenIndex != -1) {
//							preNameIndex = getLastIndexOf(text, endParamsIndex, ' ');
//						}
//						else {
//							preNameIndex = getLastIndexOf(text, commaIndex - 1, ' ');
//						}
//					}
//					nextParamIndex = -1;
//				}
//				else {
//					// process non-last visible parameter.
//					preNameIndex = getLastIndexOf(text, commaIndex - 1, ' ');
//					nextParamIndex = commaIndex + 1;
//					if (text.charAt(nextParamIndex) == ' ') {
//						nextParamIndex++;
//					}
//				}
//				if (preNameIndex >= 0) {
//					dtEndIndex = preNameIndex - 1;
//				}
//				Color highlightColor =
//					getMarkupBackgroundColor(cursorTextOffset, markupItem, dtStartIndex, dtEndIndex);
//				Highlight highlight = new Highlight(dtStartIndex, dtEndIndex, highlightColor);
//				highlightList.add(highlight);
//			}
			// Use the following if data types and names are all grouped into the function signature.
			// Otherwise use the while loop above to get just the data types.
			Color highlightColor =
				getMarkupBackgroundColor(cursorTextOffset, markupItem, startParamsIndex,
					endParamsIndex);
			Highlight highlight = new Highlight(startParamsIndex, endParamsIndex, highlightColor);
			highlightList.add(highlight);
		}
	}
Creates a darker shade of the color passed-in, based on the given amount.

algorithm: 1) grab individual rgb elements
           2) multiply each by a factor.
           
           ie: int newRed = (int)(oldRed * 0.85);

@param color the color to shade
@param amount number between 0..1 (the smaller the number, the darker the shade)
@return the new color
Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/duallisting/VTDualListingHighlightProvider.java