@Override
	public void decode(Decoder decoder) throws DecoderException {
		int start = decoder.openElement(ELEM_PARAMMEASURES);
		functionname = decoder.readString(ATTRIB_NAME);
		if (!func.getName().equals(functionname)) {
			throw new DecoderException(
				"Function name mismatch: " + func.getName() + " + " + functionname);
		}
		for (;;) {
			int subel = decoder.peekElement();
			if (subel == 0) {
				break;
			}
			if (subel == ELEM_ADDR.id()) {
				functionaddress = AddressXML.decode(decoder);
				if (!func.getEntryPoint().equals(functionaddress)) {
					throw new DecoderException("Mismatched address in function tag");
				}
			}
			else if (subel == ELEM_PROTO.id()) {
				decoder.openElement();
				modelname = decoder.readString(ATTRIB_MODEL);
				protoextrapop = (int) decoder.readSignedIntegerExpectString(ATTRIB_EXTRAPOP,
					"unknown", PrototypeModel.UNKNOWN_EXTRAPOP);
				decoder.closeElement(subel);
			}
			else if (subel == ELEM_INPUT.id()) {
				decodeParamMeasure(decoder, inputlist);
			}
			else if (subel == ELEM_OUTPUT.id()) {
				decodeParamMeasure(decoder, outputlist);
			}
			else {
				throw new DecoderException("Unknown tag in parammeasures");
			}
		}
		decoder.closeElement(start);
	}
@param i is the index of the specific output
@return the specific of output for functionparams
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/HighParamID.java