When instructions are added, it's not the instruction being added, but its pointer.
The only actual instructions that are added are the unknown ones.
Trying to make some sense of this by actually removing pointers when an instruction is removed.
Oddly, this patch doesn't break anything.
Sending the changes to perhaps makes some sense on the purpose of the removeValue() function.
These changes are incomplete, given the special handling of arguments for callsites when adding an instruction,
but it's deleting more than before...
Does it make sense to name it deleteInstruction and remove the cast below?