private MemberItem HandleMemberAndSignature(string itemName, string signatureName, AsmEntry asmEntry, MemberItem parentItem) { asmEntry.Private = m_ScanForPrivateMembers; //HACK SPECIAL CASE if (SkipSpecialCaseMember(itemName)) { return(null); } // Create member item if not already existing if (!m_MapNameToItem.ContainsKey(itemName)) { if (!m_ScanForPrivateMembers) { m_MapNameToItem[itemName] = new MemberItem(itemName, asmEntry.EntryType); } else { return(null); } } else if (!m_ScanForPrivateMembers && !m_MapNameToItem[itemName].MultipleSignaturesPossible) { Console.WriteLine("Same member name found twice for {0} (multiple signatures should not be possible for this type)", itemName); } // Get member item MemberItem item = m_MapNameToItem[itemName]; // Create signature if (!item.ContainsSignature(signatureName)) { var sigEntry = new SignatureEntry(signatureName); sigEntry.AddFromAssembly(asmEntry); item.AddSignature(sigEntry); } else { if (!m_ScanForPrivateMembers) { Console.WriteLine("We should not see the same signature entry twice!! for {0} : {1}.", itemName, signatureName); } else { var sigEntry = item.GetSignature(signatureName, true); if (!sigEntry.InAsm) { sigEntry.AddFromAssembly(asmEntry); } } } if (item != null && parentItem != null && !parentItem.ChildMembers.Contains(item)) { parentItem.ChildMembers.Add(item); } return(item); //the item we just populated, may or may not be used }