ApiEntry CreateEntry(MemberInfo memberInfo)
        {
            var entry = ApiEntry.Create(this, _whitelist, memberInfo);

            if (entry == null)
            {
                return(null);
            }

            string docFileName = null;

            if (memberInfo is Type type)
            {
                if (type.IsGenericType)
                {
                    type = type.GetGenericTypeDefinition();
                }
                docFileName = Path.ChangeExtension(new Uri(type.Assembly.CodeBase).LocalPath, "xml");
            }
            else
            {
                type = memberInfo.DeclaringType;
                if (type?.IsGenericType ?? false)
                {
                    type = type.GetGenericTypeDefinition();
                }
                var codeBase = type?.Assembly.CodeBase;
                if (codeBase != null)
                {
                    docFileName = Path.ChangeExtension(new Uri(codeBase).LocalPath, "xml");
                }
            }

            if (docFileName != null)
            {
                if (!_documentationCache.TryGetValue(docFileName, out var documentation))
                {
                    _documentationCache[docFileName] = documentation = File.Exists(docFileName) ? XDocument.Load(docFileName) : null;
                }
                var doc = documentation?.XPathSelectElement($"/doc/members/member[@name='{entry.XmlDocKey}']");
                entry.Documentation = XmlDoc.Generate(doc);
            }

            return(entry);
        }
 public bool IsAdditionalEntry(ApiEntry entry)
 {
     return(_entries.Contains(entry));
 }