private static UdonSharpDataLocator InitializeUdonSharpData()
        {
            if (!AssetDatabase.IsValidFolder(Path.GetDirectoryName(DEFAULT_DATA_PATH)))
            {
                AssetDatabase.CreateFolder("Assets", "UdonSharp");
            }

            UdonSharpDataLocator locator = CreateInstance <UdonSharpDataLocator>();

            AssetDatabase.CreateAsset(locator, DEFAULT_DATA_PATH);

            string utilsTargetPath = GetUtilitiesPath(locator);

            string utilsSourcePath = Path.Combine(UdonSharpLocator.SamplesPath, "Utilities");

            if (Directory.Exists(utilsSourcePath))
            {
                DeepCopyDirectory(utilsSourcePath, utilsTargetPath);
            }
            else
            {
                Debug.LogWarning("No utilities directory found to copy from for UdonSharp utility scripts");
            }

            Debug.Log("Created UdonSharp data directory", locator);

            AssetDatabase.Refresh();

            return(locator);
        }
        private static string GetUtilitiesPath(UdonSharpDataLocator locator)
        {
            string locatorPath = AssetDatabase.GetAssetPath(locator);

            return(Path.Combine(Path.GetDirectoryName(locatorPath), "UtilityScripts"));
        }