protected void decodeHeader(Decoder decoder) throws DecoderException {
		name = null;
		id = 0;
		typelock = false;
		namelock = false;
		isThis = false;
		isHidden = false;
		categoryIndex = -1;
		category = -1;

		for (;;) {
			int attribId = decoder.getNextAttributeId();
			if (attribId == 0) {
				break;
			}
			if (attribId == ATTRIB_ID.id()) {
				id = decoder.readUnsignedInteger();
			}
			else if (attribId == ATTRIB_TYPELOCK.id()) {
				typelock = decoder.readBool();
			}
			else if (attribId == ATTRIB_NAMELOCK.id()) {
				namelock = decoder.readBool();
			}
			else if (attribId == ATTRIB_THISPTR.id()) {
				isThis = decoder.readBool();
			}
			else if (attribId == ATTRIB_HIDDENRETPARM.id()) {
				isHidden = decoder.readBool();
			}
			else if (attribId == ATTRIB_NAME.id()) {
				name = decoder.readString();
			}
			else if (attribId == ATTRIB_CAT.id()) {
				category = (int) decoder.readSignedInteger();
			}
			else if (attribId == ATTRIB_INDEX.id()) {
				categoryIndex = (int) decoder.readUnsignedInteger();
			}
		}
		if (id == 0) {
			throw new DecoderException("missing unique symbol id");
		}
	}
Encode the symbol description as an element to the stream.  This does NOT save the mappings.
@param encoder is the stream encoder
@throws IOException for errors in the underlying stream
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/HighSymbol.java