private static synchronized void initialize() throws Exception {
		if (languageGdisMap != null) {
			return;
		}

		languageGdisMap = new HashMap<>();

		try {
			// sample elf files located in data directory
			ResourceFile dataDir =
				Application.getModuleSubDirectory(GNU_DISASSEMBLER_MODULE_NAME, "data");
			gdisDataDirectory = dataDir.getFile(false);
			defaultGdisExecFile = Application.getOSFile(GNU_DISASSEMBLER_MODULE_NAME, GDIS_EXE);
		}
		catch (FileNotFoundException e) {
			// ignore
		}

		if (gdisDataDirectory == null) {
			Msg.warn(GNUExternalDisassembler.class,
				"Use of External GNU Disassembler requires installation of extension: " +
					GNU_DISASSEMBLER_MODULE_NAME);
		}

		initializeMaps();

		if (defaultGdisExecFile == null || !defaultGdisExecFile.canExecute()) {
			Msg.warn(GNUExternalDisassembler.class,
				"External GNU Disassembler not found: " + GDIS_EXE);
			defaultGdisExecFile = null;
		}
	}
Get detailed instruction list for a block of instructions.

@param lang
           processor language (corresponding LanguageID must be defined
           within LanguageMap.txt)
@param blockAddr
           start of block ( must be true: (offset & -(2^blockSizeFactor)
           == offset)
@param blockSizeFactor
           the block size factor where blockSize = 2^blockSizeFactor
           (must be > 0)
@param byteProvider
           provider for block of bytes to be disassembled starting at
           offset 0
@return list of instructions or null if language not supported by GNU
        Disassembler
@throws Exception
Ghidra/Extensions/SleighDevTools/src/main/java/ghidra/app/util/disassemble/GNUExternalDisassembler.java