public static ItemViewModel BuildItem(IHostService host, ItemViewModel item, FileModel model, Func <string, bool> filter = null)
        {
            var linkToUids    = new HashSet <string>();
            var pageViewModel = model.Content as PageViewModel;
            var skip          = pageViewModel?.ShouldSkipMarkup;

            if (skip != true)
            {
                item.Summary = Markup(host, item.Summary, model, filter);
                item.Remarks = Markup(host, item.Remarks, model, filter);
                if (model.Type != DocumentType.Overwrite)
                {
                    item.Conceptual = Markup(host, item.Conceptual, model, filter);
                }
            }

            /*
             * !!! TO-DO !!!
             * linkToUids.UnionWith(item.Inheritance ?? EmptyEnumerable);
             * linkToUids.UnionWith(item.DerivedClasses ?? EmptyEnumerable);
             * linkToUids.UnionWith(item.InheritedMembers ?? EmptyEnumerable);
             * linkToUids.UnionWith(item.Implements ?? EmptyEnumerable);
             */

            linkToUids.UnionWith(item.SeeAlsos?.Where(s => s.LinkType == LinkType.CRef)?.Select(s => s.LinkId) ?? EmptyEnumerable);
            linkToUids.UnionWith(item.Sees?.Where(s => s.LinkType == LinkType.CRef)?.Select(s => s.LinkId) ?? EmptyEnumerable);

            /*
             * if (item.Overridden != null)
             * {
             *  linkToUids.Add(item.Overridden);
             * }
             */

            if (item.Syntax?.Return != null)
            {
                if (item.Syntax.Return.Description != null && skip != true)
                {
                    item.Syntax.Return.Description = Markup(host, item.Syntax?.Return?.Description, model, filter);
                }
                //linkToUids.UnionWith(item.Syntax.Return.Type ?? EmptyEnumerable);
            }

            var parameters = item.Syntax?.Parameters;

            if (parameters != null)
            {
                foreach (var parameter in parameters)
                {
                    if (skip != true)
                    {
                        parameter.Description = Markup(host, parameter.Description, model, filter);
                    }
                    //linkToUids.UnionWith(parameter.Type ?? EmptyEnumerable);
                }
            }

            /*
             * if (item.Exceptions != null)
             * {
             *  foreach (var exception in item.Exceptions)
             *  {
             *      if (skip != true)
             *      {
             *          exception.Description = Markup(host, exception.Description, model, filter);
             *      }
             *      linkToUids.Add(exception.Type);
             *  }
             * }
             */

            model.LinkToUids = model.LinkToUids.Union(linkToUids);
            return(item);
        }