private void readExtraRange(XmlElement el, String spcName, String tagName) {
		AddressSpace addressSpace = spaceBases.get(spcName).first;
		long first = 0;
		long last = -1;
		boolean seenLast = false;
		String attrvalue = el.getAttribute("first");
		if (attrvalue != null) {
			first = SpecXmlUtils.decodeLong(attrvalue);
		}
		attrvalue = el.getAttribute("last");
		if (attrvalue != null) {
			last = SpecXmlUtils.decodeLong(attrvalue);
			seenLast = true;
		}
		if (!seenLast) {
			last = addressSpace.getMaxAddress().getUnsignedOffset();
		}
		if (extraRanges == null) {
			extraRanges = new ArrayList<>();
		}
		extraRanges.add(new Pair<>(tagName + '_' + spcName, new Pair<>(first, last)));
	}
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