public static void UnboxIfNeeded(this ILGenerator generator, Type type)
        {
            if (type.IsValueType())
                generator.Emit(OpCodes.Unbox_Any, type);
            else