private void readAddressRange(XmlPullParser parser, AddressSet set)
			throws AddressFormatException, AddressOutOfBoundsException {

		XmlElement element = parser.peek();
		while (element.getName().equals("ADDRESS_RANGE")) {
			element = parser.next();

			String startStr = element.getAttribute("START");
			String endStr = element.getAttribute("END");

			Address start = XmlProgramUtilities.parseAddress(factory, startStr);
			Address end = XmlProgramUtilities.parseAddress(factory, endStr);

			try {
				if (start == null || end == null) {
					throw new AddressFormatException(
						"Incompatible Function Address Range: [" + startStr + "," + endStr + "]");
				}
				set.addRange(start, end);
			}
			finally {
				element = parser.next();//consume the end addr range tag...
			}

			element = parser.peek();
		}
	}
Parses a list of {@link Function function} definitions from xml 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 parser the parser
@param overwriteConflicts true to overwrite any conflicts
@param ignoreStackFrames true to ignore stack frames
@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/Base/src/main/java/ghidra/app/util/xml/FunctionsXmlMgr.java