Returning interface (iinterface or uinterface?) from UFUNCTION

I’ve got two UFUNCTION’s in a blueprint library:

UFUNCTION(BlueprintCallable, Category = "UserPosition")
static void SetUserPositionSource(TSubclassOf<class UUserPositionSource> UserPositionSource);

UFUNCTION(BlueprintCallable, Category = "UserPosition")
static void GetUserPositionSource(IUserPositionSource& UserPositionSource);

The first one is fine, I cast it to IUserPositionSource and it’s all good. The Get function doesn’t work. I’ve tried returning both “I” and “U” interfaces as a reference parameter and a return value to no avail (miscellaneous errors about casting and conversion). Has anyone pulled this off? I know I could return a UObject and cast it, but that seems a bit messy.