Multithreaded AnimInstances, TheadSafeUpdate, Proxy and Property Access?

Hey everyone.

I have been refactoring my ABP into using LinkedLayers and while at it, moved it to use Property Access system in the Blueprints.

I am now looking at nativizing it again to C++ and I am unclear how to handle it. I see some people say that AnimInstance->ThreadSafeUpdate is the same as using proxy, some say I should be using Proxy instead but there is no example anywhere on how to correctly set it up?

In Blueprints in ThreadSafeUpdate you can use PropertyAccess to get value off pointers while being thread safe, however there is no documentation on how to set that up in C++.

Should I be passing pointers to proxy in Instance NativeInitialize? E.g Proxy.MoveComp = Character->MoveComp()?

Then how to retrieve values? do i simply get Proxy node in ABP and use the values within (or bind them directly in nodes)?