private void decode(Decoder decoder) throws DecoderException {
		int el = decoder.openElement(ELEM_SLEIGH);
		int version = 0;
		uniqueBase = 0;
		alignment = 1;
		uniqueAllocateMask = 0;		// Default mask is 0
		numSections = 0;
		boolean isBigEndian = false;
		int attrib = decoder.getNextAttributeId();
		while (attrib != 0) {
			if (attrib == ATTRIB_VERSION.id()) {
				version = (int) decoder.readSignedInteger();
			}
			else if (attrib == ATTRIB_BIGENDIAN.id()) {
				isBigEndian = decoder.readBool();
			}
			else if (attrib == ATTRIB_UNIQBASE.id()) {
				uniqueBase = decoder.readUnsignedInteger();
			}
			else if (attrib == ATTRIB_ALIGN.id()) {
				alignment = (int) decoder.readSignedInteger();
			}
			else if (attrib == ATTRIB_UNIQMASK.id()) {
				uniqueAllocateMask = (int) decoder.readUnsignedInteger();
			}
			else if (attrib == ATTRIB_NUMSECTIONS.id()) {
				numSections = (int) decoder.readUnsignedInteger();
			}
			attrib = decoder.getNextAttributeId();
		}
		if (version != FORMAT_VERSION) {
			throw new SleighException(".sla file for " + getLanguageID() + " has the wrong format");
		}
		Endian slaEndian = isBigEndian ? Endian.BIG : Endian.LITTLE;
		Endian ldefEndian = description.getEndian();
		Endian instEndian = description.getInstructionEndian();
		if (slaEndian != ldefEndian && instEndian == ldefEndian) {
			throw new SleighException(".ldefs says " + getLanguageID() + " is " + ldefEndian +
				" but .sla says " + slaEndian);
		}
		indexer = new SourceFileIndexer();
		indexer.decode(decoder);
		parseSpaces(decoder);
		symtab = new SymbolTable();
		symtab.decode(decoder, this);
		root =
			((SubtableSymbol) symtab.getGlobalScope().findSymbol("instruction")).getDecisionNode();
		decoder.closeElement(el);
	}
Returns the source file indexer
@return indexer
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/processors/sleigh/SleighLanguage.java