FObjectReader/Writer with Transient issue

Hi all. I have strange issue witt save/load using FObject(Reader/Writer). I have simple structure:

class USkillFeature : public UObject {
	USkillFeature() = default;	
	UPROPERTY(Transient, VisibleAnywhere)
	USkill* Skill = nullptr;

Save/Load process is folowing:

                       TArray<uint8> InBytes;
                        FObjectWriter Writer(Obj, InBytes);

                        auto tmp = Cast<UClass>(Obj)->GetDefaultObject();
			if (tmp->IsA(USaveInstanced::StaticClass())) {
				Obj = DuplicateObject(tmp, tmp->GetPackage());
				TArray<uint8> InBytes;
				InnerArchive << InBytes;
				FObjectReader Reader(Obj, InBytes);

When I load this class I have following exception here:

			if (ULinkerPlaceholderExportObject* PlaceholderVal = Cast<ULinkerPlaceholderExportObject>(ObjectValue))

But I put Transient for that field. It has to be ignored in save/load process. In rare cases when save load works this property is loaded from save file. So seems like Transient do nothing in my case. Debugging haven’t helped yet.

This workaround works, but I don’t like to implement it for any internal object reference in all children

inline void USkillFeature::Serialize(FArchive& Ar) {
	Skill = nullptr;

What I’m doing wrong? Thanks!