public static object Coerce(object value, Type toType)
{
if (value == null) return null;
var args = new object[] {toType};
var dispatcher = GetDispatcher(value, "$Coerce$", new[] {toType}, () => CreateCoerceDispatcher(value, toType));
return dispatcher(value, args);
}