Func <object, object, bool> CompareValues(Type type) { _comparers.TryGetValue(type, out var comparer); comparer = comparer ?? DefaultComparerFor(type); return(Comparers.GetOrAdd(type, (Func <object, object, bool>)_openCompareValues.MakeGenericMethod(type) .Invoke(null, new[] { comparer }))); }