private void AddMethod(
            Dictionary <String, LookupListItem> foundItems,
            MemberInfo memberInfo)
        {
            MethodInfo mi = (MethodInfo)memberInfo;

            if (mi.IsSpecialName)
            {
                return;
            }
            if (mi.IsPrivate)
            {
                return;
            }
            if (mi.Name == "Finalize")
            {
                return;
            }

            if (!foundItems.ContainsKey(mi.Name))
            {
                bool isExtensionMethod =
                    mi.GetCustomAttributes(
                        typeof(ExtensionAttribute),
                        false).Length > 0;

                LookupListItem lli = new LookupListItem();
                lli.DisplayText = mi.Name;
                lli.InsertText  = mi.Name;
                lli.ToolTipText = String.Format("{0} {1}_OVR_",
                                                CSharpFormattingTools.GetTypeSignature(mi.ReturnType),
                                                CSharpFormattingTools.GetMethodSignature(mi));

                if (isExtensionMethod)
                {
                    lli.Category = QuickSharp.CodeAssist.Constants.METHOD_EXTENSION;
                }
                else if (mi.IsPublic)
                {
                    lli.Category = QuickSharp.CodeAssist.Constants.METHOD;
                }
                else if (mi.IsFamily)
                {
                    lli.Category = QuickSharp.CodeAssist.Constants.METHOD_PROTECTED;
                }
                else
                {
                    return;
                }

                LookupMenuItem lmi = new LookupMenuItem();

                lmi.DisplayText = String.Format("{0} {1}",
                                                CSharpFormattingTools.GetTypeSignature(mi.ReturnType),
                                                CSharpFormattingTools.GetMethodSignature(mi));

                lmi.InsertText = CSharpFormattingTools.GetMinimalMethodSignature(mi);

                lli.MenuItems.Add(lmi);

                foundItems.Add(mi.Name, lli);
            }
            else
            {
                // Overloaded method
                LookupListItem lli = foundItems[mi.Name];
                LookupMenuItem lmi = new LookupMenuItem();

                lmi.DisplayText = String.Format("{0} {1}",
                                                CSharpFormattingTools.GetTypeSignature(mi.ReturnType),
                                                CSharpFormattingTools.GetMethodSignature(mi));

                lmi.InsertText = CSharpFormattingTools.GetMinimalMethodSignature(mi);

                if (mi.IsPublic)
                {
                    lli.Category = QuickSharp.CodeAssist.Constants.METHODOVERLOAD;
                }
                else if (mi.IsFamily)
                {
                    lli.Category = QuickSharp.CodeAssist.Constants.METHODOVERLOAD_PROTECTED;
                }
                else
                {
                    return;
                }

                lli.MenuItems.Add(lmi);
            }
        }