@Override
	public boolean evaluateReference(VarnodeContext context, Instruction instr, int pcodeop,
			Address address, int size, DataType dataType, RefType refType) {

		// special check for parameters, evaluating the call, an uncomputed call wouldn't get here normally
		// really there should be another callback when adding parameters
		if (refType.isCall() && !refType.isComputed() && pcodeop == PcodeOp.UNIMPLEMENTED) {
			return true;
		}

		// unless this is a direct address copy, don't trust computed accesses below minStoreLoadOffset
		//     External spaces can have low addresses... so don't check them
		AddressSpace space = address.getAddressSpace();
		if (space.isExternalSpace()) {
			return true;
		}

		long maxAddrOffset = space.getMaxAddress().getAddressableWordOffset();
		long wordOffset = address.getAddressableWordOffset();
		boolean isKnownReference = !address.isConstantAddress();

		if (pcodeop != PcodeOp.COPY && ((wordOffset >= 0 && wordOffset < minStoreLoadOffset) ||
			(Math.abs(maxAddrOffset - wordOffset) < minStoreLoadOffset))) {
			if (!isKnownReference) {
				return false;
			}
			PcodeOp[] pcode = instr.getPcode();
			if (pcode.length > 1) { // for simple pcode, assume it is a good location.
				return false;
			}
		}

		Program program = instr.getProgram();
		AutoAnalysisManager aMgr = AutoAnalysisManager.getAnalysisManager(program);

		// if data reference, handle data
		if (refType.isData()) {
			createPointedToData(aMgr, program, address, refType, dataType, size);
		}

		// if flowing to an address, disassemble it
		// only disassemble in executable memory
		Memory memory = program.getMemory();
		if (refType.isFlow() && !refType.isIndirect() && !memory.isExternalBlockAddress(address) &&
			memory.getExecuteSet().contains(address)) {
			Data udata = program.getListing().getUndefinedDataAt(address);
			if (udata != null) {
				DisassembleCommand cmd = new DisassembleCommand(address, null, true);
				cmd.applyTo(program, monitor);
			}
			// 
			// TODO: need to kick analysis if the target is a function and non-returning
			// Function functionAt = program.getFunctionManager().getFunctionAt(address);
			// if (functionAt != null && functionAt.hasNoReturn()) {
			//	aMgr.functionModifierChanged(address);
			// }
		}

		return true;
	}
If you override this method, and the default behavior of checking 0-256 and mask values is desired,
call super.evaluateReference() in your overriden method.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/ConstantPropagationContextEvaluator.java