If you look at line 98 in the current version of Merger.cs, it's using the same value twice when determining types
var value1 = kvp1.Value;
var value2 = kvp2.Value;
var type1 = value1.GetType ();
var type2 = value1.GetType ();
Doesn't seem right to me...