void doArmThumbDisassembly(Program program, Instruction instruction, VarnodeContext context,
			Address target, FlowType flowType, boolean addRef, TaskMonitor monitor) {
		if (target == null) {
			return;
		}
		
		target = flowArmThumb(program, instruction, context, target, flowType, addRef);
		if (target == null) {
			return;
		}

		// this is here so the reference gets created, but not - disassembled if it is in a bad part of memory.
		// something computed it into the memory
		MemoryBlock block = program.getMemory().getBlock(target);
		if (block == null || !block.isExecute() || !block.isInitialized() || block.isExternalBlock()) {
			return;
		}
		
		Disassembler dis = Disassembler.getDisassembler(program, monitor, null);
		AddressSet disassembleAddrs = dis.disassemble(target, null);
		AutoAnalysisManager.getAnalysisManager(program).codeDefined(disassembleAddrs);
	}
Disassemble at the specified target address and optionally create a mnemonic flow reference.
@param monitor
@param instruction flow from instruction
@param target disassembly address
@param flowType if not null a reference from the instruction mnemonic will be created to the specified
target address using this flowType.
@param addRef true if a reference should be added.
Ghidra/Processors/ARM/src/main/java/ghidra/app/plugin/core/analysis/ArmAnalyzer.java