private void postProcess(Map<String, Object> result, Function func, Map<String, Object> stack) {
		String signatureSource = (String) result.get("signatureSource");
		if (signatureSource != null) {
			SourceType signatureSourceType = getSourceType(signatureSource);
			func.setSignatureSource(signatureSourceType);
		}

		Boolean purgeValid = (Boolean) result.get("isStackPurgeSizeValid");
		Double purgeSize = (Double) stack.get("purgeSize");
		if (purgeSize != null) {
			if (purgeValid == null) {
				func.setStackPurgeSize((int) (double) purgeSize);
			}
			else {
				func.setStackPurgeSize(
					purgeValid ? (int) (double) purgeSize : Function.UNKNOWN_STACK_DEPTH_CHANGE);
			}
		}
	}
Parses a list of {@link Function function} definitions from SARIF and creates
then, adding them to the current {@link Program program}.
<p>
Information from a TYPEINFO_COMMENT is used in preference to information from
RETURN_TYPE and STACK_FRAME/STACK_VARs that are tagged as parameters.
<p>
DTD for the FUNCTION element:

<pre>
<code>
&lt;!ELEMENT FUNCTION (RETURN_TYPE?, ADDRESS_RANGE*, REGULAR_CMT?, REPEATABLE_CMT?, TYPEINFO_CMT?, STACK_FRAME?, REGISTER_VAR*)&gt;
</code>
</pre>

@param result             the parser
@param options
@param monitor            the task monitor
@throws AddressFormatException if any address is not parsable
@throws CancelledException     if the operation is cancelled through the
                               monitor
Ghidra/Features/Sarif/src/main/java/sarif/managers/FunctionsSarifMgr.java