public virtual void TearDown()
        {
            GraphElementHelper.UseNewStylesheets = m_SavedUseNewStylesheets;
            UIForModel.Reset();

            if (m_EnablePersistence)
            {
                window.ClearPersistentViewData();
            }

            Clear();

            GraphViewSettings.UserSettings.EnableSnapToPort    = m_SnapToPortEnabled;
            GraphViewSettings.UserSettings.EnableSnapToBorders = m_SnapToBorderEnabled;
            GraphViewSettings.UserSettings.EnableSnapToGrid    = m_SnapToGridEnabled;
            GraphViewSettings.UserSettings.EnableSnapToSpacing = m_SnapToSpacingEnabled;
            GraphViewSettings.UserSettings.SpacingMarginValue  = m_SpacingMarginValue;
        }
        // If you need this, ask yourself if you should not use a UnityTest and CommandDispatcher.State.GraphViewState.RequestUIRebuild();
        public void RebuildUI(IGraphModel graphModel, CommandDispatcher commandDispatcher)
        {
            var nodeList = Nodes.ToList();

            foreach (var node in nodeList)
            {
                RemoveElement(node);
            }

            var edgeList = Edges.ToList();

            foreach (var edge in edgeList)
            {
                RemoveElement(edge);
            }

            var stickyList = Stickies.ToList();

            foreach (var sticky in stickyList)
            {
                RemoveElement(sticky);
            }

            var placematList = Placemats.ToList();

            foreach (var placemat in placematList)
            {
                RemoveElement(placemat);
            }

            UIForModel.Reset();

            foreach (var nodeModel in graphModel.NodeModels)
            {
                var element = GraphElementFactory.CreateUI <GraphElement>(this, commandDispatcher, nodeModel);
                AddElement(element);
            }

            foreach (var edgeModel in graphModel.EdgeModels)
            {
                var element = GraphElementFactory.CreateUI <GraphElement>(this, commandDispatcher, edgeModel);
                AddElement(element);
            }

            foreach (var stickyNoteModel in graphModel.StickyNoteModels)
            {
                var element = GraphElementFactory.CreateUI <GraphElement>(this, commandDispatcher, stickyNoteModel);
                AddElement(element);
            }

            List <IModelUI> placemats = new List <IModelUI>();

            foreach (var placematModel in graphModel.PlacematModels)
            {
                var element = GraphElementFactory.CreateUI <GraphElement>(this, commandDispatcher, placematModel);
                AddElement(element);
                placemats.Add(element);
            }

            // Update placemats to make sure hidden elements are all hidden (since
            // a placemat can hide a placemat UI created after itself).
            foreach (var placemat in placemats)
            {
                placemat.UpdateFromModel();
            }
        }