@Override
	synchronized void updateRefType(Address changeAddr, int opIndex, RefType refType)
			throws IOException {
		boolean updateRefLevel = false;
		byte newLevel = getRefLevel(refType);
		if (!isFrom) {
			updateRefLevel = (newLevel != refLevel);
		}
		LongField addrField = new LongField(addrMap.getKey(changeAddr, false));
		for (Field id : table.findRecords(addrField, ADDRESS_COL)) {
			DBRecord rec = table.getRecord(id);
			if (rec.getByteValue(OPINDEX_COL) == (byte) opIndex) {
				if (refType.getValue() == rec.getByteValue(TYPE_COL)) {
					return; // change not required
				}
				rec.setByteValue(TYPE_COL, refType.getValue());
				table.putRecord(rec);

				if (updateRefLevel) {
					if (newLevel > refLevel) {
						refLevel = newLevel;
					}
					else {
						refLevel = findHighestRefLevel((byte) -1);
					}
					updateRecord();
				}
				break;
			}
		}
	}
Construct reference list for existing record
@param rec existing refList record
@param adapter entry record storage adapter
@param addrMap address map for encoding/decoding addresses
@param program associated Program
@param cache RefList object cache
@param isFrom true for from-adapter use, false for to-adapter use
@throws IOException if database IO error occurs
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/references/BigRefListV0.java