@Nonnull
		public SortedSet<LocalAccess> getReadsUpTo(int offset) {
			// TODO: This is a linear check, which can be defeated by basic flow obfuscation
			//  - We need to rewalk the control flow and find all the paths that lead to this instruction/offset
			//    then get any local accesses that are along that path.
			//    - Can take a look at the recent 'natural flow' fix in 'goto-inlining-transformer' to copy/paste from
			//    - Then we can remove the 'controlFlowObserved' where this method is being used
			return getReads().stream()
					.filter(l -> l.offset < offset)
					.collect(Collectors.toCollection(TreeSet::new));
		}
State tracking for when variables are read from and written to, along with the common merged value.
<br>
These states are keyed by {@link #key(int, int)} which ensures that multiple types can target the
same variable index without issue, should there be attempts to observe the merged {@link ReValue}.
Since the key takes in {@link Type#getSort()} there should never be invalid merge operations of
incompatible value types.
recaf-core/src/main/java/software/coley/recaf/services/deobfuscation/transform/generic/VariableFoldingTransformer.java