I can't run this program because I'm currently on linux box and I'm not going to mess with mono.
I don't understand what are you trying to prove. If you send same amount at the same time, then this program may find the wrong addresses. There's no need to prove this because it can be seen from source code.
However, it can (with modifications) find all these addresses that you control. This is enough for deanonymization.
It's pretty obvious what I'm trying to prove and that is it doesn't actually deanonymise anything. It merely looks for values of a similar amount (taking account of fees) and makes a logical assumption about which transactions (and therefore wallets) originated it, a fact that is made easier by very limited transactions on the blockchain at any one time.
There is no real link between these transactions and if the blockchain was more congested it would be damn near impossible to figure out.
With 5 completely separate wallets as I am proposing there would be absolutely no way to trace any transaction back to the originating wallet, this is proof enough that in a more congested blockchain with many people sending anonymous transactions at any one time it would be impossible to track them.
You don't need "link" between transactions in the blockchain to deanonymize it. There is probably no link because mixers probably don't send the same coins to the final recipient.
If you - for example - send 84.237482496 coins then looking in blockchain for amounts that are equal to this one (even if they are part of different transactions) usually yields only one result.
Such method of deanonymization works even in larger networks with lots of transactions, for example in bitcoin. That's why mixers have employed much more advanced methods of hiding transactions. For example, they steal some coins (the recipient doesn't receive
84.237482496 - transaction fees
but instead it receives
84.237482496 - transaction fees - amount of coins stolen
). And mixers also send coins to recipients to several addresses and over much longer period of time which may be very random (days or even weeks).