public static Address decode(Decoder decoder) throws DecoderException {
		int el = decoder.openElement();
		if (el == ELEM_SPACEID.id()) {
			AddressSpace spc = decoder.readSpace(ATTRIB_NAME);
			decoder.closeElement(el);
			int spaceid = spc.getSpaceID();
			spc = decoder.getAddressFactory().getConstantSpace();
			return spc.getAddress(spaceid);
		}
		else if (el == ELEM_IOP.id()) {
			int ref = (int) decoder.readUnsignedInteger(ATTRIB_VALUE);
			decoder.closeElement(el);
			AddressSpace spc = decoder.getAddressFactory().getConstantSpace();
			return spc.getAddress(ref);
		}
		AddressSpace spc = null;
		long offset = -1;
		for (;;) {
			int attribId = decoder.getNextAttributeId();
			if (attribId == 0) {
				break;
			}
			if (attribId == ATTRIB_SPACE.id()) {
				spc = decoder.readSpace();
			}
			else if (attribId == ATTRIB_OFFSET.id()) {
				offset = decoder.readUnsignedInteger();
			}
		}
		decoder.closeElement(el);
		if (spc == null) {
			// EXTERNAL_SPACE is currently a placeholder for an unsupported decompiler address space
			return Address.NO_ADDRESS;
		}
		return spc.getAddress(offset);
	}
Create an address from a stream encoding. This recognizes elements
<ul>
  <li>{@code <addr>}</li>
  <li>{@code <spaceid>}</li>
  <li>{@code <iop>} or</li>
  <li>any element with "space" and "offset" attributes</li>
</ul>
An empty {@code <addr>} element, with no attributes, results in {@link Address#NO_ADDRESS}
being returned.
@param decoder is the stream decoder
@return Address created from decode info
@throws DecoderException for any problems decoding the stream
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/AddressXML.java