Duplicate actor - Crashes, unexpected behaviour

void UPlayerInventory::Take(AInventoryItem * Item)
{
if (IsFull())
{
return;
}

	AInventoryItem * ItemToTake = Item;

	if (!ItemToTake->GetLevel()->IsPersistentLevel())
	{
		FActorSpawnParameters SpawnParams;
		SpawnParams.Template = ItemToTake;

		// Queue old one to destroy.
		ItemToTake->Destroy();

		// Create using old one as template.
		ItemToTake = (AInventoryItem*)(GetWorld()->SpawnActor<AInventoryItem>(Item->GetClass(), SpawnParams));
	}

	OwnedItems.Add(ItemToTake);
	ItemToTake->OnTake();
	SetActiveItem(ItemToTake);
}