protected virtual GameObject GetPrefab()
        {
            var assetPath = AssetDatabase.GetAssetPath(target);

            if (string.IsNullOrEmpty(assetPath))
            {
                return(null);
            }

            var mainObject = AssetDatabase.LoadMainAssetAtPath(assetPath);

            if (mainObject != null)
            {
                //return mainObject;
            }

            var prefab = AssetDatabase.LoadAssetAtPath <GameObject>(assetPath);

            if (prefab != null)
            {
                return(prefab);
            }

            var parent     = UnityPath.FromUnityPath(assetPath).Parent;
            var prefabPath = parent.Parent.Child(parent.FileNameWithoutExtension + ".prefab");

            prefab = UnityEditor.AssetDatabase.LoadAssetAtPath <GameObject>(prefabPath.Value);
            if (prefab != null)
            {
                return(prefab);
            }

            var parentParent = UnityPath.FromUnityPath(assetPath).Parent.Parent;
            var vrmPath      = parent.Parent.Child(parent.FileNameWithoutExtension + ".vrm");

            prefab = UnityEditor.AssetDatabase.LoadAssetAtPath <GameObject>(vrmPath.Value);

            return(prefab);
        }