public static Set<PcodeOp> getBackwardSliceToPCodeOps(Varnode seed) {
		Set<Varnode> varnodes = new HashSet<>();
		Set<PcodeOp> pcodeops = new HashSet<>();
		List<Varnode> worklist = new ArrayList<>();
		worklist.add(seed);

		for (int i = 0; i < worklist.size(); i++) {

			Varnode curvn = worklist.get(i);

			worklist.get(i);

			if (!varnodes.add(curvn)) {
				continue; // already processed
			}

			PcodeOp op = curvn.getDef();
			if (op == null) {
				continue;
			}

			pcodeops.add(op);
			if (op.getOpcode() == PcodeOp.CALL) {
				continue;
			}
			if (op.getOpcode() == PcodeOp.CALLIND) {
				continue;
			}

			for (int j = 0; j < op.getNumInputs(); ++j) {
				Varnode input = op.getInput(j);
				if (input == null) {
					continue;
				}
				worklist.add(input);
			}
		}
		return pcodeops;
	}
Construct the set of varnodes making up a simple forward slice of seed
@param seed Varnode where the slice starts
@return set of Varnodes in the slice
Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerUtils.java