public void decode(Decoder decoder) throws DecoderException {
		int symel = decoder.openElement(ELEM_SYMBOL);
		decodeHeader(decoder);
		type = dtmanage.decodeDataType(decoder);
		decoder.closeElement(symel);

		if (categoryIndex >= 0 && name.startsWith("$$undef")) {
			// use default parameter name
			name = "param_" + Integer.toString(categoryIndex + 1);
		}

		for (;;) {
			int el = decoder.peekElement();
			if (el == 0) {
				break;
			}
			SymbolEntry entry;
			if (el == ELEM_HASH.id()) {
				entry = new DynamicEntry(this);
			}
			else if (this instanceof HighCodeSymbol) {
				entry = new MappedDataEntry(this);
			}
			else {
				entry = new MappedEntry(this);
			}
			entry.decode(decoder);
			addMapEntry(entry);
		}
		if ((isThis || isHidden) && entryList != null) {
			SymbolEntry entry = entryList[0];
			VariableStorage storage = entry.getStorage();
			AutoParameterType autoType =
				isThis ? AutoParameterType.THIS : AutoParameterType.RETURN_STORAGE_PTR;
			try {
				VariableStorage newStorage = new DynamicVariableStorage(
					storage.getProgramArchitecture(), autoType, storage.getFirstVarnode());
				entryList[0] = new MappedEntry(this, newStorage, entry.getPCAdress());
			}
			catch (InvalidInputException e) {
				throw new DecoderException("Unable to parse auto-parameter");
			}
		}
	}
Decode this symbol object and its associated mappings from the stream.
@param decoder is the stream decoder
@throws DecoderException for invalid encodings
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/HighSymbol.java