public boolean isFunctionTable(Program program, int offset) {
		PseudoDisassembler pdis = new PseudoDisassembler(program);
		ArrayList<Address> disassembleList = new ArrayList<>();

		// get the set of addresses that are marked executable
		AddressSet execSet = getExecuteSet(program.getMemory());

		//  make the pointers
		//
		for (int j = offset; j < tableElements.length; j++) {
			Address testAddr = tableElements[j];
			if (testAddr == null) {
				return false;
			}
			if (execSet != null && !execSet.contains(testAddr)) {
				return false;
			}
			if (pdis.isValidCode(testAddr)) {
				disassembleList.add(testAddr);
			}
			if (tableContains(testAddr)) {
				disassembleList.add(testAddr);
			}
		}
		if (disassembleList.size() == tableElements.length - offset) {
			return true;
		}
		return false;
	}
Create the index array for this table if it has an index
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/disassembler/AddressTable.java