internal static void ValidateCurrentGraph(bool force = false)
        {
            var shouldRun = k_Cooldown.Update(DateTime.Now);

            if (!force && !shouldRun)
            {
                return;
            }

            foreach (var recorder in Current.RecordersBySystem.Values)
            {
                recorder.Update();
            }

            var graph = new PlayerLoopSystemGraph();

            ParsePlayerLoopSystem(PlayerLoop.GetCurrentPlayerLoop(), graph);
            if (!DidChange(Current, graph))
            {
                graph.Reset();
                return;
            }

            Current.Reset();
            Current = graph;
            OnGraphChanged?.Invoke();
        }
        static void ValidateCurrentGraph()
        {
            var now = DateTime.Now;

            if (now - s_LastValidate < s_OneSecond)
            {
                return;
            }

            s_LastValidate = now;

            var graph = new PlayerLoopSystemGraph();

            ParsePlayerLoopSystem(PlayerLoop.GetCurrentPlayerLoop(), graph);
            if (!DidChange(Current, graph))
            {
                graph.Reset();
                return;
            }

            Current.Reset();
            Current = graph;
            OnGraphChanged?.Invoke();
        }
 // Parse through the player loop system to get all system list and their parent-children relationship,
 // which will be used to build the treeview.
 public static void ParsePlayerLoopSystem(PlayerLoopSystem rootPlayerLoopSystem, PlayerLoopSystemGraph graph)
 {
     graph.Reset();
     Parse(rootPlayerLoopSystem, graph);
 }