END_SLATE_FUNCTION_BUILD_OPTIMIZATION

void SReflectorTreeWidgetItem::HandleHyperlinkNavigate()
{
	FAssetData AssetData = WidgetInfo->GetWidgetAssetData();
	if ( AssetData.IsValid() )
	{
		if ( OnAccessAsset.IsBound() )
		{
			AssetData.GetPackage();
			OnAccessAsset.Execute(AssetData.GetAsset());
			return;
		}
	}

	if ( OnAccessSourceCode.IsBound() )
	{
		OnAccessSourceCode.Execute(GetWidgetFile(), GetWidgetLineNumber(), 0);
	}
}
void SReflectorTreeWidgetItem::HandleHyperlinkNavigate()
{
	TWeakPtr<SWidget> Widget = WidgetInfo.Get()->Widget;
	if ( Widget.IsValid() )
	{
		TSharedPtr<SWidget> SafeWidget = Widget.Pin();
		TSharedPtr<FReflectionMetaData> MetaData = SafeWidget->GetMetaData<FReflectionMetaData>();
		if ( MetaData.IsValid() && MetaData->Asset.Get() != nullptr )
		{
			if ( OnAccessAsset.IsBound() )
			{
				OnAccessAsset.Execute(MetaData->Asset.Get());
				return;
			}
		}
	}

	if ( OnAccessSourceCode.IsBound() )
	{
		OnAccessSourceCode.Execute(GetWidgetFile(), GetWidgetLineNumber(), 0);
	}
}