@Override
		public AddressRange getRegisterValueRangeContaining(Register register, Address addr) {

			// register assumed to always be valid context register during disassembly

			AddressRange tempValueRange = temporaryContextMap.getAddressRangeContaining(addr);
			if (realProgramContext == null) {
				return tempValueRange;
			}

			// context range stored within program - need to check if we have already disassembled 
			// within this range and changed context
			AddressRange realValueRange =
				realProgramContext.getRegisterValueRangeContaining(register, addr);

			// we don't really care about the min address of the range since this is not used
			if (tempValueRange.getMaxAddress().compareTo(realValueRange.getMaxAddress()) < 0) {
				return tempValueRange;
			}
			return realValueRange;
		}
Following the parse of a new instruction prototype, get a immutable processor context
for minting a new instruction.  If value is not null, the temporary context is expanded 
to include the context-register value.  The temporary context should be cleared after in-memory
instructions (i.e., InstructionSet) have been written to the program.
@param value to add to instruction context if different
@param instrAddr address of instruction that should have context
@param instrLength length of instruction to set context
@return instruction context with possible added value
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/disassemble/Disassembler.java