private void generateCallTree(UMLOperation operation, CallTreeNode parent, CallTree callTree) { Set<OperationInvocation> invocations = operation.getAllOperationInvocations(); for(UMLOperation addedOperation : addedOperations) { for(OperationInvocation invocation : invocations) { if(invocation.matchesOperation(addedOperation, operation.variableTypeMap(), modelDiff)) { if(!callTree.contains(addedOperation)) { CallTreeNode node = new CallTreeNode(operation, addedOperation, invocation); parent.addChild(node); generateCallTree(addedOperation, node, callTree); } } } } }