private void load(Object into, SaveState from) {
			if (!from.hasValue(name)) {
				return; // leave the intial value as "default"
			}
			try {
				T current = (T) getter.invoke(into);
				T val = codec.read(from, name, current);
				if (val == null || val == current) {
					return;
				}
				if (setter == null) {
					throw new IllegalAccessException("Codec cannot modify final field: " + name);
				}
				setter.invoke(into, val);
			}
			catch (Throwable e) {
				throw new AssertionError(e);
			}
		}
Get an object from a {@link SaveState} using a known codec

<p>
This seems like something that should be in SaveState itself.

@param <T> the type of the value
@param state the state to read from
@param type the expected type of the value
@param name the name of the name-value pair
@return the value of the name-value pair
Ghidra/Debug/ProposedUtils/src/main/java/ghidra/framework/plugintool/AutoConfigState.java