public static VariableStorage getCompatibleVariableStorage(Program program,
			VariableStorage storage, Program otherProgram) {
		if (storage == null || storage.size() == 0 || storage.isHashStorage()) {
			return storage;
		}
		Varnode[] varnodes = storage.getVarnodes();
		for (int i = 0; i < varnodes.length; i++) {
			varnodes[i] = getCompatibleVarnode(program, varnodes[i], otherProgram);
			if (varnodes[i] == null) {
				return null;
			}
		}
		try {
			return new VariableStorage(otherProgram, varnodes);
		}
		catch (InvalidInputException e) {
			throw new RuntimeException(e); // unexpected
		}
	}
Convert a variable storage object from the specified program to a comparable variable storage
object in the specified otherProgram.  Certain variable storage (UNIQUE/HASH-based) will
always produce a null return object.
@param program program which contains the specified address instance
@param storage variable storage in program
@param otherProgram other program
@return storage for otherProgram or null if storage can not be mapped to other program
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/util/SimpleDiffUtility.java