private void encodeMemoryTags(Encoder encoder, ElementId tag, AddressSet addrSet)
			throws IOException {
		if (addrSet == null) {
			return;
		}
		encoder.openElement(tag);
		AddressRangeIterator iter = addrSet.getAddressRanges();
		while (iter.hasNext()) {
			AddressRange range = iter.next();
			encoder.openElement(ELEM_RANGE);
			AddressXML.encodeAttributes(encoder, range.getMinAddress(), range.getMaxAddress());
			encoder.closeElement(ELEM_RANGE);
		}
		encodeExtraRanges(encoder, tag);
		encoder.closeElement(tag);
	}
Initialize this object from an XML stream.  A single {@code <compiler_spec>} tag is expected.
@param parser is the XML stream
@throws XmlParseException for badly formed XML
@throws DuplicateNameException if we parse more than one PrototypeModel with the same name
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/BasicCompilerSpec.java