public void decode(Decoder decoder) throws DecoderException {
		int el = decoder.openElement(ELEM_JUMPTABLE);
		if (decoder.peekElement() == 0) {		// Empty jumptable
			decoder.closeElement(el);
			return;
		}
		ArrayList<Address> aTable = new ArrayList<>();
		ArrayList<Integer> lTable = new ArrayList<>();
		ArrayList<LoadTable> ldTable = new ArrayList<>();

		Address switchAddr = AddressXML.decode(decoder);

		for (;;) {
			int subel = decoder.peekElement();
			if (subel == 0) {
				break;
			}
			if (subel == ELEM_DEST.id()) {
				decoder.openElement();
				Address caseAddr = AddressXML.decodeFromAttributes(decoder);
				aTable.add(caseAddr);
				decoder.rewindAttributes();
				for (;;) {
					int attribId = decoder.getNextAttributeId();
					if (attribId == 0) {
						break;
					}
					if (attribId == ATTRIB_LABEL.id()) {
						int label = (int) decoder.readUnsignedInteger();
						lTable.add(label);
					}
				}
				decoder.closeElement(subel);
			}
			else if (subel == ELEM_LOADTABLE.id()) {
				LoadTable loadtable = new LoadTable();
				loadtable.decode(decoder);
				ldTable.add(loadtable);
			}
			else {
				decoder.skipElement();
			}
		}

		opAddress = switchAddr;
		addressTable = new Address[aTable.size()];
		aTable.toArray(addressTable);
		labelTable = new Integer[lTable.size()];
		lTable.toArray(labelTable);
		loadTable = new LoadTable[ldTable.size()];
		ldTable.toArray(loadTable);
		decoder.closeElement(el);
	}
Decode a JumpTable object from the stream.
@param decoder is the stream decoder
@throws DecoderException for invalid encodings
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/JumpTable.java