protected ProcessorContext getInstructionContext(RegisterValue value, Address instrAddr,
				int instrLength) {

			if (value == null) {
				// If null, implies no context register and should always be null
				if (instructionContextCache == null) {
					instructionContextCache =
						new InstructionContext(Disassembler.this.language, null);
				}
				return instructionContextCache;
			}

			if (instructionContextCache == null ||
				!SystemUtilities.isEqual(value, instructionContextCache.getContextValue())) {
				instructionContextCache = new InstructionContext(Disassembler.this.language, value);
			}

			// NOTE: It is possible for bad context flow to a location already
			// disassembled within the same InstructionSet to alter the temporary context
			// and produce conflict errors at that address.  The specified flowFrom may not be the
			// source of the bad context when multiple flow sources to that address exist.
			// This issue could be resolved here by throwing an exception if the specified
			// value differs from the value already contained in the temporaryContextMap 
			// at the cost of an additional lookup:

//			RegisterValue oldValue = temporaryContextMap.getObject(instrAddr);
//			if (oldValue != null && !oldValue.equals(value)) {
//				throw new SomeException // catch and produce conflict error
//			}

			Address maxAddr = instrAddr.add(instrLength - 1);
			temporaryContextMap.setObject(instrAddr, maxAddr, value);

			return instructionContextCache;
		}
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