public DisassemblyContentProvider Create()
        {
            var blocks            = X86BlockFactory.Create(bitness, this.blocks);
            var cachedSymResolver = new CachedSymbolResolver();

            foreach (var block in blocks)
            {
                if (!string.IsNullOrEmpty(block.Label))
                {
                    cachedSymResolver.AddSymbol(block.Address, new SymbolResolverResult(SymbolKindUtils.ToSymbolKind(block.LabelKind), block.Label, block.Address), fakeSymbol: true);
                }
            }
            if (symbolResolver != null)
            {
                var addresses = GetPossibleSymbolAddresses(blocks);
                if (addresses.Length != 0)
                {
                    var symbolResolverResults = new SymbolResolverResult[addresses.Length];
                    symbolResolver.Resolve(addresses, symbolResolverResults);
                    cachedSymResolver.AddSymbols(addresses, symbolResolverResults, fakeSymbol: false);
                }
            }
            for (int i = 0; i < blocks.Length; i++)
            {
                var block = blocks[i];
                if (cachedSymResolver.TryResolve(block.Address, out var symbol, out _) && block.Label != symbol.Symbol)
                {
                    blocks[i] = new X86Block(block.Kind, block.Address, block.Comment, symbol.Symbol, SymbolKindUtils.ToFormatterOutputTextKind(symbol.Kind), block.Instructions);
                }
            }
            return(new X86DisassemblyContentProvider(bitness, cachedSymResolver, deps.DisasmSettings, deps.MasmSettings, deps.NasmSettings, deps.GasSettings, formatterOptions, header, optimization, blocks, codeInfo, variableInfo, methodName));
        }
        public DisassemblyContentProvider Create()
        {
            var blocks            = X86BlockFactory.Create(bitness, this.blocks);
            var cachedSymResolver = new CachedSymbolResolver();

            if (symbolResolver != null)
            {
                var addresses = GetPossibleSymbolAddresses(blocks);
                if (addresses.Length != 0)
                {
                    var symbolResolverResults = new SymbolResolverResult[addresses.Length];
                    symbolResolver.Resolve(addresses, symbolResolverResults);
                    cachedSymResolver.AddSymbols(addresses, symbolResolverResults, fakeSymbol: false);
                }
            }
            foreach (var block in blocks)
            {
                if (!string.IsNullOrEmpty(block.Label))
                {
                    cachedSymResolver.AddSymbol(block.Address, new SymbolResolverResult(SymbolKindUtils.ToSymbolKind(block.LabelKind), block.Label, block.Address), fakeSymbol: true);
                }
            }
            return(new X86DisassemblyContentProvider(bitness, cachedSymResolver, deps.DisasmSettings, deps.MasmSettings, deps.NasmSettings, deps.GasSettings, formatterOptions, header, optimization, blocks, codeInfo, variableInfo, methodName));
        }