Crash when duplicate a AnimBluePrint to a file which is already exist

I want to duplicate a AnimBlueprint to a file named “” which is already exist, just only change the skeleton. Crashed when call the function StaticDuplicateObject. Cannt use for the exist file?

    bool AUtil::MakeNewAnimBlueprint(UAnimBlueprint* AnimBlueprint, USkeleton* NewSkeleton, const FString& FilePath,	const FString& Name,)
    {
	if (!NewSkeleton)
		return false;
	FString PackageNameStr = FilePath + "/" + Name;
    	UObject* Asset = LoadObject<UAnimBlueprint>(NULL, *PackageNameStr);
	if (Asset)    		
    	Asset = DuplicateAnimBlueprintOverwrite(Asset, AnimBlueprint, NewSkeleton);
    }
    
    UObject* AUtil::DuplicateAnimBlueprintOverwrite(UObject* DestObject, UObject* SourceObject, USkeleton* NewSkeleton)
    {
    	UObject* NewObject = NULL;
    
    	EDuplicateMode::Type DuplicateMode = SourceObject->IsA(UWorld::StaticClass()) ? EDuplicateMode::World : EDuplicateMode::Normal;
    	NewObject = StaticDuplicateObject(SourceObject, DestObject->GetOuter(), *DestObject->GetName(), RF_AllFlags, nullptr, DuplicateMode);
    
    	if (!NewObject)
    		return NULL;
    	UAnimBlueprint* NewAnimBlueprint = Cast<UAnimBlueprint>(NewObject);
    	NewAnimBlueprint->TargetSkeleton = NewSkeleton;
    	FBlueprintEditorUtils::RefreshAllNodes(NewAnimBlueprint);
    	bool bIsRegeneratingOnLoad = false;
    	bool bSkipGarbageCollection = true;
    	FKismetEditorUtilities::CompileBlueprint(NewAnimBlueprint, bIsRegeneratingOnLoad, bSkipGarbageCollection);
    
    	return NewObject;
    }