experimental reflect_func() macro