public static HighSymbol decodeMapSym(Decoder decoder, boolean isGlobal, HighFunction high)
			throws DecoderException {
		HighSymbol res = null;
		int mapel = decoder.openElement(ELEM_MAPSYM);
		int symel = decoder.peekElement();
		if (symel == ELEM_EQUATESYMBOL.id()) {
			res = new EquateSymbol(high);
		}
		else if (isGlobal) {
//			res = new HighCodeSymbol(high);
			// Currently the decompiler does not send back global symbols. They are inferred from the HighVariables
		}
		else {
			res = new HighSymbol(high);
		}
		res.decode(decoder);
		for (;;) {
			SymbolEntry entry;
			int subid = decoder.peekElement();
			if (subid == 0) {
				break;
			}
			if (subid == ELEM_HASH.id()) {
				entry = new DynamicEntry(res);
			}
			else {
				entry = new MappedEntry(res);
			}
			entry.decode(decoder);
			res.addMapEntry(entry);
		}
		decoder.closeElement(mapel);
		return res;
	}
Restore a full HighSymbol from the next &lt;mapsym&gt; element in the stream.
This method acts as a HighSymbol factory, instantiating the correct class
based on the particular elements.
@param decoder is the stream decoder
@param isGlobal is true if this symbol is being read into a global scope
@param high is the function model that will own the new symbol
@return the new symbol
@throws DecoderException for invalid encodings
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/HighSymbol.java