protected void initializeRegisters(EmulatorConfiguration config) {
		RegisterState initRegs = config.getLoadData().getInitialRegisterState();
		PcodeExecutorState<byte[]> regState = thread.getState(); // NB. No .getLocalState()
		for (String key : initRegs.getKeys()) {
			if (!initRegs.isInitialized(key).get(0)) {
				continue;
			}
			Register register = language.getRegister(key);
			if (register == null) {
				Msg.warn(this, "No such register '" + key + "' in language " + language);
				continue;
			}
			// Yes, allow memory-mapped registers to be initialized in this manner
			byte[] val = initRegs.getVals(key).get(0);
			// TODO: GDTR/IDTR/LDTR _Limit, _Address stuff.... Is that arch specific?
			regState.setVar(register, val);
		}
	}
An adapter to keep track of the filter chain

<p>
We don't actually invoke this adapter's set/getChunk methods. Instead, we just use it to
track what filters are installed. The {@link AdaptedBytesPcodeExecutorState} will invoke the
filter chain and then perform the read or write itself.
Ghidra/Framework/Emulation/src/main/java/ghidra/app/emulator/AdaptedEmulator.java