Instantiate synchronously using Addressables

using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

namespace Voodoocado
{
    public static class Helpers
    {
        public static T InstantiateSync<T>(AssetReference assetReference, Transform parent)
        {
            if (assetReference == null)
            {
                Debug.LogError("Missing prefab being added to " + parent.name);
                return default(T);
            }
            try
            {
                AsyncOperationHandle<GameObject> gameObject = Addressables.InstantiateAsync(assetReference, parent);
                gameObject.WaitForCompletion();
                return gameObject.Result.GetComponent<T>();
            }
            catch
            {
            }
            Debug.LogError("Failed to load prefab to " + parent.name);
            return default(T);
        }
    }
}