This also allows you to test for errors at every stage of reflection (although it's a bit ugly if done this way), e.g: UObject* Result = (UObject*)(((FVMReflection(TestObjA), &bError)->*"AObjectRef", &bErrorA)->*"BObjectRef", &bErrorB);