public int decode(Decoder decoder) throws DecoderException {
		int sectionid = -1;
		numlabels = 0;
		int el = decoder.openElement(ELEM_CONSTRUCT_TPL);
		int attrib = decoder.getNextAttributeId();
		while (attrib != 0) {
			if (attrib == ATTRIB_LABELS.id()) {
				numlabels = (int) decoder.readSignedInteger();
			}
			else if (attrib == ATTRIB_SECTION.id()) {
				sectionid = (int) decoder.readSignedInteger();
			}
			attrib = decoder.getNextAttributeId();
		}
		int handel = decoder.peekElement();
		if (handel == ELEM_NULL.id()) {
			decoder.openElement();
			decoder.closeElement(handel);
			result = null;
		}
		else {
			result = new HandleTpl();
			result.decode(decoder);
		}
		ArrayList<Object> oplist = new ArrayList<>();
		while (decoder.peekElement() != 0) {
			OpTpl op = new OpTpl();
			op.decode(decoder);
			oplist.add(op);
		}
		vec = new OpTpl[oplist.size()];
		oplist.toArray(vec);
		decoder.closeElement(el);
		return sectionid;
	}
Decode this template from a {@code <construct_tpl>} tag in the stream.
@param decoder is the stream
@return the constructor section id described by the tag
@throws DecoderException for errors in the encoding
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/processors/sleigh/template/ConstructTpl.java