private List<LoadSpec> processDEX(ZipFileSystem zipFS, GFile file, TaskMonitor monitor)
			throws IOException {

		monitor.setMessage("Reading classes.dex ...");
		List<LoadSpec> loadSpecs = new ArrayList<>();
		try {
			ByteProvider byteProvider =
				zipFS.getByteProvider(file, monitor);
			BinaryReader reader = new BinaryReader(byteProvider, true);
			DexHeader header = DexHeaderFactory.getDexHeader(reader);
			if (DexConstants.DEX_MAGIC_BASE.equals(new String(header.getMagic()))) {
				List<QueryResult> queries =
					QueryOpinionService.query(getName(), DexConstants.MACHINE, null);
				for (QueryResult result : queries) {
					loadSpecs.add(new LoadSpec(this, 0, result));
				}
				if (loadSpecs.isEmpty()) {
					loadSpecs.add(new LoadSpec(this, 0, true));
				}
			}
		}
		catch (CancelledException e) {
			//ignore
		}
		return loadSpecs;
	}
Loads the "classes.dex" file to determine the LoadSpec
@param zipFS the Android APK file system
@param file the classes.dex file from the file system
@param monitor the task monitor
@return the list of LoadSpec, could be empty list
@throws IOException if exception occurs reading the classes.dex file.
Ghidra/Features/FileFormats/src/main/java/ghidra/app/util/opinion/ApkLoader.java