private BacktrackResult GoToBaseConstructor(Triple startTriple, Triple triple, ISourceDetector nameSourceDetector, AssignmentTree assignmentTree, AssignmentTreeNode lastNode, BacktrackCounter counter, bool inReturnScope, ExploreTreeNode exploreTreeNode, int depth) { var baseClass = triple.To.InheritsFromConcreteClass; var baseClassCtors = _tripleStore.GetAllTriples().Where(x => x.To.ObjectKey.IndexOf(baseClass) > -1 && x.To.ObjectKey.IndexOf(".ctor") > -1); foreach (var baseClassCtorTriple in baseClassCtors) { if (baseClassCtorTriple.To.InstanceOwnerKey.Equals(triple.To.MemberName)) { var childExploreTreeNode = CreateExploreTreeNode(baseClassCtorTriple, "ViaBaseConstructor", exploreTreeNode); var branchResult = BacktrackingSearchMatches(startTriple, triple, new List <Triple>() { baseClassCtorTriple }, nameSourceDetector, assignmentTree, lastNode, counter, inReturnScope, true, childExploreTreeNode, depth); if (branchResult != BacktrackResult.BranchFailure) { return(branchResult); } } } return(BacktrackResult.BranchFailure); }