public bool OnVirtualBreakpointReached(Types.Breakpoint Breakpoint)
        {
            Debug.Log("OnVirtualBreakpointReached");
            bool        addedRequest = false;
            RequestData prevRequest  = null;

            foreach (var virtualBP in Breakpoint.Virtual)
            {
                if (!virtualBP.IsVirtual)
                {
                    continue;
                }
                var tokenInfos = Core.Compiling.ParserASM.ParseTokenInfo(virtualBP.Expression, 0, virtualBP.Expression.Length, Core.Compiling.ParserASM.m_TextCodeMappingRaw);
                if (Core.Compiling.ParserASM.HasError())
                {
                    Core.AddToOutput("Failed to ParseTokenInfo" + System.Environment.NewLine);
                    continue;
                }
                int result = -1;
                if (!Core.Compiling.ParserASM.EvaluateTokens(-1, tokenInfos, Core.Compiling.ParserASM.m_TextCodeMappingRaw, out SymbolInfo resultSymbol))
                {
                    Core.AddToOutput("Failed to evaluate " + virtualBP.Expression + System.Environment.NewLine);
                    continue;
                }
                result = resultSymbol.ToInt32();
                if ((result < 0) ||
                    (result >= 65536))
                {
                    Core.AddToOutput("Evaluated address out of range " + result + System.Environment.NewLine);
                    continue;
                }

                if (prevRequest != null)
                {
                    prevRequest.LastInGroup = false;
                }

                int traceSize = 1;
                var requData  = Debugger.RefreshTraceMemory(result, traceSize, virtualBP.Expression, virtualBP, Breakpoint);

                if (requData.Parameter2 >= 0x10000)
                {
                    requData.Parameter2 = 0xffff;
                }

                prevRequest = requData;

                addedRequest = true;
            }
            if (!addedRequest)
            {
                // and auto-go on with debugging
                Debugger.Run();
                return(false);
            }
            return(true);
        }