Is there a bug with this specific function in Blueprint.cpp?

This is the code for UBlueprint::GetBlueprintParentClassFromAssetTags:

UClass* UBlueprint::GetBlueprintParentClassFromAssetTags(const FAssetData& BlueprintAsset)
{
	UClass* ParentClass = nullptr;
	FString ParentClassName;
	if(!BlueprintAsset.GetTagValue(FBlueprintTags::NativeParentClassPath, ParentClassName))
	{
		BlueprintAsset.GetTagValue(FBlueprintTags::ParentClassPath, ParentClassName);
	}
	
	if(!ParentClassName.IsEmpty())
	{
		UObject* Outer = nullptr;
		ResolveName(Outer, ParentClassName, false, false);
		ParentClass = FindObject<UClass>(Outer, *ParentClassName);
	}
	
	return ParentClass;
}

Shouldn’t we be calling BlueprintAsset.GetTagValue(FBlueprintTags::ParentClassPath, ParentClassName)) and then checking for FBlueprintTags::NativeParentClassPath only after failing to find the ParentClassPath?

With this current implementation, I can’t make an Editor Utility Blueprint that only supports BP classes, because this code always checks for NativeParentClassPath first and then, upon finding a NativeParentClass, disregards the Blueprint Parent class. Even though you can select a blueprint class a being supported by an Editor Utility Blueprint, this code prevents actually supporting Blueprint classes.