I've discovered this by just looking through code of Iridium
I'm using Jet Brains Resharper it makes attention on some code reundancies, for example - only assigned but never used variables, like in this occurence:
// swap in order to have <c>c1.Count <= c2.Count</c>
if(c1.Count > c2.Count)
{
ICollection c1Bis = c1;
c1 = c2;
c2 = c1;
}
Somehow I guess this shouldn't swap collections as expected;)