private void buildVnDown(Varnode vn) {	// Follow descendant edges
		Iterator<PcodeOp> iter = vn.getDescendants();
		if (iter == null) {
			return; // no descendants
		}

		ArrayList<ToOpEdge> newedge = new ArrayList<>();

		while (iter.hasNext()) {
			PcodeOp op = iter.next();
			Varnode tmpvn = vn;
			while (transtable[op.getOpcode()] == 0) {
				tmpvn = op.getOutput();
				if (tmpvn == null) {
					op = null;
					break;
				}
				op = tmpvn.getLoneDescend();
				if (op == null) {
					break;
				}
			}
			if (op == null) {
				continue;
			}
			int slot = op.getSlot(tmpvn);
			newedge.add(new ToOpEdge(op, slot));
		}
		if (newedge.size() > 1) {
			Collections.sort(newedge);
		}
		opedge.addAll(newedge);
	}
Encode a particular PcodeOp and slot
@param op is the PcodeOp to preserve
@param slot is the slot to preserve (-1 for output, >=0 for input)
@param method is the method to use for encoding (4, 5, or 6)
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/DynamicHash.java