private Instruction getNextInstruction(Program program, Instruction curr_inst) {
		// if instruction has a delay slot, check the delay slot instr
		if (curr_inst.getDelaySlotDepth() > 0) {
			return curr_inst.getNext();
		}

		// if instruction is in delay slot, follow delay branch
		while (curr_inst.isInDelaySlot()) {
			curr_inst = curr_inst.getPrevious();
		}

		// follow all jump flows
		FlowType flowType = curr_inst.getFlowType();
		if (flowType.isJump() && !flowType.isConditional()) {
			Address[] flows = curr_inst.getFlows();
			if (flows.length == 0) {
				return null;
			}
			curr_inst = program.getListing().getInstructionAt(flows[0]);
			return curr_inst;
		}

		// go to fall thru
		Address fallThrough = curr_inst.getFallThrough();
		if (fallThrough == null) {
			return null;
		}
		curr_inst = program.getListing().getInstructionAt(fallThrough);
		return curr_inst;
	}
Given one instruction, finds a corresponding paired instruction.
Ghidra/Processors/MIPS/src/main/java/ghidra/app/plugin/core/analysis/MipsPreAnalyzer.java