Index: trunk/t3q/src/org/etsi/t3q/visitor/QualityChecker.java
===================================================================
--- trunk/t3q/src/org/etsi/t3q/visitor/QualityChecker.java	(revision 40)
+++ trunk/t3q/src/org/etsi/t3q/visitor/QualityChecker.java	(revision 41)
@@ -30,4 +30,5 @@
 
 import de.ugoe.cs.swe.trex.core.analyzer.astutil.ReferenceFinder;
+import de.ugoe.cs.swe.trex.core.analyzer.astutil.ReferenceFinderWithCache;
 import de.ugoe.cs.swe.trex.core.analyzer.astutil.ReferenceWithContext;
 import de.ugoe.cs.swe.trex.core.analyzer.rfparser.ASTUtil;
@@ -54,4 +55,6 @@
 	private ArrayList<LocationAST> subsequentLogStatementNodes = new ArrayList<LocationAST>();
 	private Stack<LocationAST> cyclicFunctionReferences = new Stack<LocationAST>();
+
+	private ReferenceFinder referenceFinder;
 	
 	
@@ -60,4 +63,5 @@
 		this.logger = new LoggingInterface(T3Q.activeProfile.getLoggingConfiguration());
 		this.logger.setMaximumLogLevel(T3Q.getLogLevel());
+		this.setReferenceFinder(new ReferenceFinderWithCache());
 	}
 	
@@ -158,6 +162,5 @@
 		Symbol functionDefSymbol = functionDefIdentifierNode.getSymbol();
 
-		ReferenceFinder referenceFinder = new ReferenceFinder();
-		Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder
+		Map<String, List<ReferenceWithContext>> referenceMap = getReferenceFinder()
 				.findReferences(functionDefSymbol);
 		if (referenceMap.isEmpty()) {
@@ -252,6 +255,5 @@
 			}
 			
-			ReferenceFinder referenceFinder = new ReferenceFinder();
-			Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder
+			Map<String, List<ReferenceWithContext>> referenceMap = getReferenceFinder()
 					.findReferences(relevantSymbols);
 			Iterator<List<ReferenceWithContext>> referenceMapIterator = referenceMap
@@ -401,5 +403,4 @@
 		}
 		
-		ReferenceFinder referenceFinder = new ReferenceFinder();
 		String moduleDefinitionIdentifierText;
 		if (node.getType()!=TTCN3ParserTokenTypes.ModuleDefinition) {
@@ -410,5 +411,5 @@
 		for (LocationAST localDefinitionIdentifier : localDefinitionsIdentifiersList) {
 			Symbol symbol = localDefinitionIdentifier.getFirstChild().getSymbol();
-			if (referenceFinder.countReferences(symbol)==0) {
+			if (getReferenceFinder().countReferences(symbol)==0) {
 				this.getLoggingInterface().logWarning(localDefinitionIdentifier.getLine(),
 						localDefinitionIdentifier.getEndLine(),
@@ -492,7 +493,6 @@
 		
 		Symbol formalParSymbol = identifierNode.getFirstChild().getSymbol();
-		ReferenceFinder referenceFinder = new ReferenceFinder();
 		int referenceCount = 0;
-		referenceCount = referenceFinder.countReferences(formalParSymbol);
+		referenceCount = getReferenceFinder().countReferences(formalParSymbol);
 		if (referenceCount == 0) {
 			String containingModuleDefinitionName = node.getContainingModuleDefinitionIdentifiersList().get(0).getFirstChild().getText();
@@ -516,6 +516,5 @@
 		Symbol moduleSymbol = moduleIdentifier.getFirstChild().getSymbol();
 
-		ReferenceFinder referenceFinder = new ReferenceFinder();
-		Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder.findReferences(moduleSymbol);
+		Map<String, List<ReferenceWithContext>> referenceMap = getReferenceFinder().findReferences(moduleSymbol);
 		Iterator<List<ReferenceWithContext>> referenceMapIterator = referenceMap.values().iterator();
 		while (referenceMapIterator.hasNext()) {
@@ -544,6 +543,5 @@
 		Symbol moduleSymbol = moduleIdentifier.getFirstChild().getSymbol();
 
-		ReferenceFinder referenceFinder = new ReferenceFinder();
-		Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder.findReferences(moduleSymbol);
+		Map<String, List<ReferenceWithContext>> referenceMap = getReferenceFinder().findReferences(moduleSymbol);
 		Iterator<List<ReferenceWithContext>> referenceMapIterator = referenceMap.values().iterator();
 		while (referenceMapIterator.hasNext()) {
@@ -863,7 +861,5 @@
 		}
 		
-		ReferenceFinder referenceFinder = new ReferenceFinder();
-
-		Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder
+		Map<String, List<ReferenceWithContext>> referenceMap = getReferenceFinder()
 				.findReferences(localDefinitionsSymbolsList);
 		
@@ -1017,6 +1013,5 @@
 				return;
 			}
-			ReferenceFinder referenceFinder = new ReferenceFinder();
-			if (referenceFinder.countReferences(s) == 0) {
+			if (getReferenceFinder().countReferences(s) == 0) {
 				// TODO: add stats counters
 				// TODO: add type information
@@ -1030,5 +1025,5 @@
 			} else {
 				int referencesOutsideImports = 0;
-				Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder.findReferences(s);
+				Map<String, List<ReferenceWithContext>> referenceMap = getReferenceFinder().findReferences(s);
 				Iterator<List<ReferenceWithContext>> referenceMapIterator = referenceMap.values().iterator();
 				while (referenceMapIterator.hasNext()) {
@@ -2552,4 +2547,12 @@
 	}
 
+	public void setReferenceFinder(ReferenceFinder referenceFinder) {
+		this.referenceFinder = referenceFinder;
+	}
+
+	public ReferenceFinder getReferenceFinder() {
+		return referenceFinder;
+	}
+
 
 
Index: trunk/t3q/src/org/etsi/t3q/visitor/QualityCheckerExtras.java
===================================================================
--- trunk/t3q/src/org/etsi/t3q/visitor/QualityCheckerExtras.java	(revision 40)
+++ trunk/t3q/src/org/etsi/t3q/visitor/QualityCheckerExtras.java	(revision 41)
@@ -40,6 +40,5 @@
 			Symbol s = identifierNode.getFirstChild().getSymbol();
 			//TODO: add safety check here 
-			ReferenceFinder referenceFinder = new ReferenceFinder();
-			if (referenceFinder.countReferences(s) == 0){
+			if (getReferenceFinder().countReferences(s) == 0){
 				//TODO: add stats counters
 				//TODO: add type information
@@ -92,6 +91,5 @@
 							Symbol altstepDefSymbol = altstepDefIdentifierNode.getSymbol();
 	
-							ReferenceFinder referenceFinder = new ReferenceFinder();
-							Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder
+							Map<String, List<ReferenceWithContext>> referenceMap = getReferenceFinder()
 									.findReferences(altstepDefSymbol);
 							if (referenceMap.isEmpty()) {
