public void fixupFunctionBody(Program program, Instruction start_inst, TaskMonitor monitor) {
		Function func =
			program.getFunctionManager().getFunctionContaining(start_inst.getMinAddress());
		if (func == null) {
			return;
		}

		if (start_inst.getFlowType().isCall()) {
			return;
		}

		// compute the new body, and add in the body of the table
		AddressSetView oldBody = func.getBody();
		Address entryPoint = func.getEntryPoint();
		AddressSetView funcBody = null;
		try {
			funcBody = CreateFunctionCmd.getFunctionBody(program, entryPoint);
			funcBody = funcBody.union(oldBody);
			AddressSetView body = funcBody.union(getTableBody());
			Iterator<Function> fiter =
				program.getFunctionManager().getFunctionsOverlapping(funcBody);
			while (fiter.hasNext()) {
				Function function = fiter.next();
				if (function.getEntryPoint().equals(func.getEntryPoint())) {
					continue;
				}
				body = body.subtract(function.getBody());
			}
			if (!oldBody.hasSameAddresses(body)) {
				func.setBody(body);
			}
		}
		catch (OverlappingFunctionException e) {

			try {
				funcBody = CreateFunctionCmd.getFunctionBody(monitor, program, entryPoint);
				funcBody = funcBody.union(oldBody);
				AddressSetView body = funcBody.union(getTableBody());
				if (!oldBody.hasSameAddresses(body)) {
					func.setBody(body);
				}
			}
			catch (OverlappingFunctionException e1) {
				// failed, try just with the function body, no address table
				try {
					func.setBody(funcBody);
				}
				catch (OverlappingFunctionException e2) {
					// do nothing
				}
			}
		}
	}
Fixup the function body if there is a function defined here.

@param program program we are in
@param start_inst start instruction of the jump table
@param table
@param monitor monitor to output results.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/disassembler/AddressTable.java