Have you tried stepping through the code in the debugger, to see which line triggers the error?
You might need to set the list size, because you're using a "new" action here, not a "gen" action. Whilst "gen" will allocate randomly all the lists, I believe "new" will not allocate anything that you have not explicitly asked it to do. In effect the code in the "with" block is just the same as putting it all as procedural code, thus:
transfer = new GENERIC collector_txn_s;
for each (d) using index ... { ... };