void DisplayStepValues(TracingStep step, Dictionary <IGraphElementModel, GraphElement> modelsToNodeUiMapping)
        {
            switch (step.Type)
            {
            case TracingStepType.ExecutedNode:
                // Do Nothing, already handled in HighlightTrace()
                break;

            case TracingStepType.TriggeredPort:
                var p = GetPortFromPortModel(step.PortModel, (Unity.GraphElements.Node)modelsToNodeUiMapping[step.NodeModel]);
                p.ExecutionPortActive = true;
                break;

            case TracingStepType.WrittenValue:
                AddValueToPort(modelsToNodeUiMapping, step.PortModel, step.ValueString);
                break;

            case TracingStepType.ReadValue:
                AddValueToPort(modelsToNodeUiMapping, step.PortModel, step.ValueString);
                break;
            }

            if (step.NodeModel.HasProgress && modelsToNodeUiMapping.TryGetValue(step.NodeModel, out var node) && node is Node vsNode)
            {
                vsNode.Progress = step.Progress;
            }
        }
 void AddStyleClassToModel(TracingStep step, IReadOnlyDictionary <IGraphElementModel, GraphElement> modelsToNodeUiMapping, string highlightStyle)
 {
     if (step.NodeModel != null && modelsToNodeUiMapping.TryGetValue(step.NodeModel, out GraphElement ui))
     {
         // TODO TRACING errors
         // if (step.type == DebuggerTracer.EntityFrameTrace.StepType.Exception)
         // {
         //     ui.AddToClassList(k_ExceptionHighlight);
         //
         //     if (m_PauseState == PauseState.Paused || m_PlayState == PlayModeStateChange.EnteredEditMode)
         //     {
         //         ((VseGraphView)m_GraphView).UIController.AttachErrorBadge(ui, step.errorMessage, SpriteAlignment.TopLeft);
         //     }
         // }
         // else
         {
             ui.AddToClassList(highlightStyle);
         }
     }
 }