private Dictionary <int, List <SQLConnector> > computeCorrespondencesWithLinks(SQLElement clientClassifier, SQLElement targetClassifier, SQLRepository Repository, int tggPackageId) { DateTime time1 = DateTime.Now; Dictionary <int, List <SQLConnector> > possibleCorrespondencesLinkWithConnectors = new Dictionary <int, List <SQLConnector> >(); foreach (SQLElement clientAndBases in EAUtil.getBaseClasses(clientClassifier)) { foreach (SQLConnector conOfClientClassifier in clientAndBases.Connectors) { SQLElement elementOnOtherSide = null; if (conOfClientClassifier.ClientID == clientAndBases.ElementID) { elementOnOtherSide = Repository.GetElementByID(conOfClientClassifier.SupplierID); } else if (conOfClientClassifier.SupplierID == clientAndBases.ElementID) { elementOnOtherSide = Repository.GetElementByID(conOfClientClassifier.ClientID); } if (elementOnOtherSide.Stereotype == TGGModelingMain.TggCorrespondenceTypeStereotype && EAUtil.getOutermostPackage(elementOnOtherSide, Repository).PackageID == tggPackageId) { foreach (SQLConnector conOfTGGCorrType in elementOnOtherSide.Connectors) { foreach (SQLElement targetAndBases in EAUtil.getBaseClasses(targetClassifier)) { if (conOfTGGCorrType.ClientID == targetAndBases.ElementID || conOfTGGCorrType.SupplierID == targetAndBases.ElementID) { foreach (SQLElement subClass in EAUtil.findSubclasses(elementOnOtherSide, Repository)) { List <SQLConnector> refs = new List <SQLConnector>(); refs.Add(conOfTGGCorrType); refs.Add(conOfClientClassifier); if (!possibleCorrespondencesLinkWithConnectors.ContainsKey(subClass.ElementID)) { possibleCorrespondencesLinkWithConnectors.Add(subClass.ElementID, refs); } } } } } } } } return(possibleCorrespondencesLinkWithConnectors); }