void FRedirectCollector::OnStringAssetReferenceLoaded(const FString& InString)
{
    FUObjectThreadContext& ThreadContext = FUObjectThreadContext::Get();
    FPackagePropertyPair ContainingPackageAndProperty;

    if (InString.IsEmpty())
    {
        // No need to track empty strings
        return;
    }

    if (ThreadContext.SerializedObject)
    {
        FLinkerLoad* Linker = ThreadContext.SerializedObject->GetLinker();
        if (Linker)
        {
            ContainingPackageAndProperty.SetPackage(FName(*Linker->Filename));
            if (Linker->GetSerializedProperty())
            {
                ContainingPackageAndProperty.SetProperty( FName(*FString::Printf(TEXT("%s:%s"), *ThreadContext.SerializedObject->GetPathName(), *Linker->GetSerializedProperty()->GetName())));
            }
#if WITH_EDITORONLY_DATA
            ContainingPackageAndProperty.SetReferencedByEditorOnlyProperty( Linker->IsEditorOnlyPropertyOnTheStack() );
#endif
        }
    }
    StringAssetReferences.AddUnique(FName(*InString), ContainingPackageAndProperty);
}