private void appendRef(Address fromAddr, Address toAddr, int opIndex, RefType refType,
			SourceType source, boolean isPrimary, long symbolID, boolean isOffset,
			boolean isShifted, long offsetOrShift) throws IOException {

		if (!isFrom) {
			byte level = getRefLevel(refType);
			if (level > refLevel) {
				refLevel = level;
			}
		}
		long id = table.getMaxKey() + 1;
		if (id < 0) {
			id = 0;
		}
		DBRecord refRec = BIG_REFS_SCHEMA.createRecord(id);
		refRec.setLongValue(ADDRESS_COL, addrMap.getKey(isFrom ? toAddr : fromAddr, true));
		RefListFlagsV0 flags =
			new RefListFlagsV0(isPrimary, isOffset, symbolID >= 0, isShifted, source);
		refRec.setByteValue(FLAGS_COL, flags.getValue());
		refRec.setByteValue(TYPE_COL, refType.getValue());
		refRec.setByteValue(OPINDEX_COL, (byte) opIndex);
		refRec.setLongValue(SYMBOL_ID_COL, symbolID);
		refRec.setLongValue(OFFSET_COL, offsetOrShift);
		table.putRecord(refRec);
	}
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