void populateMergeGroup(ExtensionInfoMap &InfoMap, ExtensionMergeInfoMap &MergeInfoMap, MergeGroupVector &Results, bool AllowMergeWithDefBody) { for (auto &Pair : InfoMap) { ExtensionDecl *ED = Pair.first; ExtensionMergeInfo &MergeInfo = MergeInfoMap[ED]; SynthesizedExtensionInfo &ExtInfo = InfoMap[ED]; auto Found = std::find_if(Results.begin(), Results.end(), [&](ExtensionMergeGroup &Group) { return MergeInfo == MergeInfoMap[Group.Members.front()->Ext]; }); if (Found == Results.end()) { Results.push_back({&ExtInfo, (unsigned)MergeInfo.Requirements.size(), MergeInfo.InheritsCount, AllowMergeWithDefBody && MergeInfo.isMergeableWithTypeDef()}); } else { Found->Members.push_back(&ExtInfo); } } }