public async Task <string> GetSymbolContent(SymbolData data)
        {
            string result;

            if (String.IsNullOrEmpty(data.SymbolZipName))
            {
                var alobj = await GetSymbolObject(data, true);

                result = ALParser.Write(alobj);
                return(await Task.FromResult(result));
            }

            using (Stream fs = File.OpenRead(data.Path))
            {
                using (var zf = new ZipFile(fs))
                {
                    int i;
                    int.TryParse(data.SymbolZipName, out i);
                    var zipEntry = zf[i];

                    using (var entryStream = zf.GetInputStream(zipEntry))
                    {
                        using (var zipStream = new StreamReader(entryStream))
                        {
                            result = zipStream.ReadToEnd();
                            return(await Task.FromResult(result));
                        }
                    }
                }
            }
        }
        public async Task <IALObject> GetSymbolObject(SymbolData data, bool mapSourcePath = true)
        {
            FileInfo info = new FileInfo(data.Path);

            if (info.Extension == ".al")
            {
                var alobjects = ALParser.Read(data.Path);
                var alobject  = alobjects.FirstOrDefault(f => f.Type == data.Type && f.Name == data.Name);
                var project   = ALProjectCollector.Discover(data.Path);

                return(alobject);
            }

            var symbols = await GetSymbolReference(data.Path, mapSourcePath);

            var result = symbols.Symbols.Where(w => w.Type == data.Type && w.Name == data.Name).FirstOrDefault();

            return(await Task.FromResult(result));
        }