internal ControllerConnection(TcAdsClient client)
 {
     _client           = client;
     _declarationSpace = new DeclarationSpace(this);
     _infoLoader       = _client.CreateSymbolInfoLoader();
     _infoLoader.GetFirstSymbol(true);
     _symbols = _infoLoader.GetSymbols(forceReload: true);
 }
        internal TcAdsSymbolInfo GetSymbolFrom(TcAdsSymbolInfoCollection symbols, string name)
        {
            foreach (var subname in GetPrefixes(name))
            {
                var sym = symbols.Cast <TcAdsSymbolInfo>().Where(s => s.ShortName == subname).SingleOrDefault();

                if (sym != null)
                {
                    if (name == subname)
                    {
                        return(sym);
                    }
                    else
                    {
                        var resiudalName = name.Substring(subname.Length + 1);
                        return(GetSymbolFrom(sym.SubSymbols, resiudalName));
                    }
                }
            }

            return(null);
        }