public IList <AssignmentTree> PerformBacktrackingSearch(Instruction instruction, MethodDefinition methodOfInstruction, ISourceDetector nameSourceDetector, List <GoToInstancePattern> permittedToGoInstancePatterns, List <string> searchBaseConstructorPatterns) { _goToInstancePatterns = permittedToGoInstancePatterns; _searchBaseConstructorPatterns = searchBaseConstructorPatterns; var assignmentTrees = new List <AssignmentTree>(); CreateStartTraceSection(methodOfInstruction.FullName + " : " + instruction); var instructionKey = InstructionKeyService.GetInstructionKey(instruction, methodOfInstruction); var startingKeys = _tripleStore.GetToViaInstructionKey(instructionKey); foreach (var start in startingKeys) { Print(instructionKey, 0); var exploreTreeNode = new ExploreTreeNode() { FullSignature = start.ToString() }; var rootNode = new AssignmentTreeNode(start); var assignmentTree = new AssignmentTree(); assignmentTree.RootNode = rootNode; var counter = new BacktrackCounter(); _instructionKeyStack = new Stack <string>(); BacktrackingSearch(start, start, nameSourceDetector, counter, assignmentTree, rootNode, false, exploreTreeNode, 0); assignmentTrees.Add(assignmentTree); } return(assignmentTrees); }