static void HandleSelectionWhenSwithingToNewPrefabMode(GameObject prefabContentsRoot, UInt64 previousFileID)
        {
            GameObject newSelection = null;

            if (previousFileID != 0)
            {
                newSelection = FindFirstGameObjectThatMatchesFileID(prefabContentsRoot.transform, previousFileID, true);
            }

            if (newSelection == null)
            {
                newSelection = prefabContentsRoot;
            }

            Selection.activeGameObject = newSelection;

            // For Prefab Mode we restore the last expanded tree view state for the opened Prefab. For usability
            // if a child GameObject on the Prefab Instance is selected when entering the Prefab Asset Mode we select the corresponding
            // child GameObject in the Asset. Here we ensure that selction is revealed and framed in the Scene hierarchy.
            if (newSelection != prefabContentsRoot)
            {
                foreach (SceneHierarchyWindow shw in SceneHierarchyWindow.GetAllSceneHierarchyWindows())
                {
                    shw.FrameObject(newSelection.GetInstanceID(), false);
                }
            }
        }
 public static void ReloadAllSceneHierarchies()
 {
     foreach (var window in SceneHierarchyWindow.GetAllSceneHierarchyWindows())
     {
         window.sceneHierarchy.ReloadData();
     }
 }