private List<FormatArgument> convertMapToList(Map<Integer, FormatArgument> formatArgumentMap) {
		List<FormatArgument> formatArgumentList = new ArrayList<>();
		for (int i = 1; i <= formatArgumentMap.size(); i++) {
			FormatArgument formatArgument = formatArgumentMap.get(i);
			if (formatArgument == null) {
				return null;
			}
			formatArgumentList.add(formatArgument);
		}
		return formatArgumentList;
	}
Handles format Strings with parameters. In this parser, we define a format
String parameter to be an integer n provided in the form: "%n$" or "*n$", where n is
the index of the referred argument. If a placeholder uses a format
argument parameter, all other placeholders must also have a parameter. Also,
all gaps between format argument indices are not supported. For instance, if
the first and third arguments are used, there must also be a parameter for a
second argument. Any parameter pattern beginning with % or * and ending with
$ must have integer in between. Failing to adhere by the format string
parameter requirements returns null.

@param formatString format String
@return List of FormatArgument


        TODO: What if multiple conversion specs refer to the same placeholder
        with different types? Ex: "%1$*1$x" (uses unsigned int and int)
        Currently just overwrites previous type
Ghidra/Features/DecompilerDependent/src/main/java/ghidra/app/plugin/core/string/variadic/FormatStringParser.java