void DrawPrefabGUI()
    {
        var prefabType   = EditorUtility.GetPrefabType(mGameObject);
        var prefabParent = EditorUtility.GetPrefabParent(mGameObject) as GameObject;

        EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
        GUIStyle buttonStyle    = EditorStyles.toolbarButton;
        bool     showAddCommit  = SVNUtility.IsPrefab(mGameObject, true, false, false);
        bool     showLockByPass = SVNUtility.IsPrefab(mGameObject, true, false, false);
        bool     showRevert     = SVNUtility.IsPrefab(mGameObject) && SVNUtility.HaveAssetControl(mSVNStatus);

        SVNGUIControls.SVNStatusGUI(buttonStyle, mSVNStatus, mGameObject, showAddCommit, showLockByPass, showRevert);
        if (!SVNUtility.IsPrefabParent(mGameObject))
        {
            if (SVNUtility.IsPrefab(mGameObject, true, false, true)) // non-model prefabs
            {
                if (GUILayout.Button("Apply", buttonStyle))
                {
                    SVNUtility.ApplyPrefab(mGameObject);
                    SVNCommands.UpdateLocalSVNStatus();
                }
            }
            if (SVNUtility.IsPrefab(mGameObject, true, false, true)) // non-model prefabs
            {
                if (GUILayout.Button("Disconnect", buttonStyle))
                {
                    SVNUtility.DisconnectPrefab(mGameObject);
                }
            }
            if (prefabParent != null) // has a prefab parent (prefab on disk)
            {
                if (GUILayout.Button("Select", buttonStyle))
                {
                    SVNUtility.SelectPrefab(mGameObject);
                }
            }
        }
        EditorGUILayout.EndHorizontal();
    }