public void transferObjectRef(BlockGraph ingraph) {
		ArrayList<BlockGraph> queue = new ArrayList<>();
		int pos = 0;
		queue.add(this);
		while (pos < queue.size()) {
			BlockGraph curgraph = queue.get(pos);
			pos += 1;
			int sz = curgraph.getSize();
			for (int i = 0; i < sz; ++i) {
				PcodeBlock block = curgraph.getBlock(i);
				if (block instanceof BlockCopy) {
					BlockCopy copyblock = (BlockCopy) block;
					int altindex = copyblock.getAltIndex();
					if (altindex < ingraph.getSize()) {
						PcodeBlock block2 = ingraph.getBlock(altindex);
						if (block2 instanceof BlockCopy) {
							BlockCopy copyblock2 = (BlockCopy) block2;
							copyblock.set(copyblock2.getRef(), copyblock2.getStart());	// Transfer the object reference
						}
					}
				}
				else if (block instanceof BlockGraph) {
					queue.add((BlockGraph) block);
				}
			}
		}
	}
Recursively run through this structured BlockGraph finding the BlockCopy leaves.
Using the BlockCopy altindex, lookup the original BlockCopy in -ingraph- and
transfer the Object ref and Address into the leaf 
@param ingraph is the original flow graph
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/BlockGraph.java