private boolean hasStrangeReferences(Instruction instr) {
		if (instr.getFlowOverride() != FlowOverride.NONE) {
			return true;
		}

		// should only have a call, and maybe some data references from param refs.
		boolean hadCall = false;
		Reference[] referencesFrom = instr.getReferencesFrom();
		for (Reference reference : referencesFrom) {
			RefType referenceType = reference.getReferenceType();
			if (hadCall == false && referenceType.isCall()) {
				hadCall = true;
				continue;
			}
			if (referenceType.isData()) {
				continue;
			}
			return true;
		}

		boolean hasIndirect = false;
		for (int i = 0; i < referencesFrom.length; i++) {
			if (referencesFrom[i].getReferenceType().isIndirect()) {
				hasIndirect = true;
			}
		}
		if (hasIndirect) {
			return true;
		}
		// There must be another way to get to any instruction below this.
		Instruction nextInstr = instr.getNext();
		if (nextInstr == null) {
			return false;
		}
		if (!instr.getFallThrough().equals(nextInstr.getMinAddress())) {
			return false;
		}
		ReferenceIterator referenceIteratorTo = nextInstr.getReferenceIteratorTo();
		while (referenceIteratorTo.hasNext()) {
			Reference reference = referenceIteratorTo.next();
			// found a reference other than this one
			if (reference.getFromAddress() != instr.getMinAddress()) {
				return false;
			}
		}
		return true;
	}
Check if this instruction has strange references we shouldn't mess with
Ghidra/Features/Base/ghidra_scripts/Fix_ARM_Call_JumpsScript.java