/// <summary>
        /// Get inheritance chain for given type.
        /// </summary>
        /// <param name="type">Type which inheritance chain is desired.</param>
        /// <param name="references">References where chain will be searched</param>
        /// <returns>Founded inheritance chain if available, <c>null</c> otherwise.</returns>
        internal InheritanceChain GetChain(TypeDescriptor type, ReferencedAssemblies references)
        {
            if (type == null)
            {
                return(null);
            }

            return(getChain(type.TypeName, references));
        }
        /// <summary>
        /// Get inheritance chain for given type.
        /// </summary>
        /// <param name="typeName">name of type which inheritance chain is required.</param>
        /// <param name="references">References where chain will be searched</param>
        /// <returns>Created inheritance chain.</returns>
        private InheritanceChain getChain(string typeName, ReferencedAssemblies references)
        {
            var typePath   = new PathInfo(typeName);
            var assemblies = references == null ? _assemblies.Providers : resolveKeys(references);

            foreach (var assembly in assemblies)
            {
                var inheritanceChain = assembly.GetInheritanceChain(typePath);
                if (inheritanceChain != null)
                {
                    return(inheritanceChain);
                }
            }

            return(null);
        }
 /// <summary>
 /// Creates method searcher, which can search in referenced assemblies.
 /// </summary>
 /// <param name="references">The references.</param>
 /// <returns>Created method searcher.</returns>
 internal MethodSearcher CreateSearcher(ReferencedAssemblies references)
 {
     return(new MethodSearcher(resolveKeys(references)));
 }