Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/GenerateEBNF.mwe2
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/GenerateEBNF.mwe2	(revision 65)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/GenerateEBNF.mwe2	(revision 66)
@@ -74,5 +74,5 @@
     		fragment = validation.ValidatorFragment auto-inject {
     		    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
-    		    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+    		//    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
     		}
     
@@ -115,5 +115,5 @@
     
     		// provides the necessary bindings for java types integration
-//    		fragment = types.TypesGeneratorFragment auto-inject {}
+    		//fragment = types.TypesGeneratorFragment auto-inject {}
     
     		// generates the required bindings only if the grammar inherits from Xbase
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfAnalysisUtils.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfAnalysisUtils.java	(revision 65)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfAnalysisUtils.java	(revision 66)
@@ -5,4 +5,8 @@
 
 import org.eclipse.xtext.EcoreUtil2;
+import org.eclipse.xtext.resource.IReferenceDescription;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+
 import de.ugoe.cs.swe.bnftools.ebnf.Atom;
 import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList;
@@ -83,3 +87,26 @@
 		return rules;
 	}
+	
+	//----------------------------------------------------------------------------------------------------
+	static public List<Rule> findReferences(Rule rule, IResourceDescriptions resourceDescriptions) {
+		List<Rule> ruleReferences = new ArrayList<Rule>();
+		
+		final String ruleURIF = rule.eResource().getURIFragment(rule);
+		
+		for (IResourceDescription resourceDescription : resourceDescriptions
+				.getAllResourceDescriptions()) {
+			if (!resourceDescription.getURI().equals(rule.eResource().getURI()))
+				continue;
+			
+			for (IReferenceDescription referenceDescription : resourceDescription
+					.getReferenceDescriptions()) {
+				if (ruleURIF.equals(referenceDescription.getTargetEObjectUri()
+						.fragment())) {
+					ruleReferences.add((Rule) rule.eResource().getEObject(referenceDescription.getTargetEObjectUri().fragment()));
+				}
+
+			}
+		}
+		return ruleReferences;
+	}
 }
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.xtend	(revision 65)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.xtend	(revision 66)
@@ -15,4 +15,6 @@
 import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition
 import java.util.ArrayList
+import com.google.inject.Inject
+import org.eclipse.xtext.resource.IResourceDescriptions
 
 //import java.util.HashMap
@@ -27,4 +29,9 @@
 class EbnfValidator extends AbstractEbnfValidator {
 
+
+	@Inject
+	IResourceDescriptions resourceDescriptions;
+	
+	
 	public static final String ruleReferencedOneDescription = "The rule is only referenced by one other rule";
 	public static final String passthroughRuleDescription = "The rule is a passthrough rule";
@@ -48,7 +55,7 @@
 			return;
 
-		var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
-
-		if (references.size() == 1 && rule.rulenumber != 1) {
+		var List<Rule> references = EbnfAnalysisUtils.findReferences(rule,resourceDescriptions);
+		var List<RuleReference> references1 = EbnfAnalysisUtils.findReferences(rule);
+		if (references.size+references1.size == 1 && rule.rulenumber != 1) {
 			warning(ruleReferencedOneDescription, EbnfPackage$Literals::RULE__NAME, ruleReferencedOneDescription,
 				rule.name);
@@ -172,6 +179,6 @@
 
 		var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
-
-		if ((references.size() == 0) && (rule.getRulenumber() != 1))
+		var List<Rule> references1 = EbnfAnalysisUtils.findReferences(rule,resourceDescriptions);
+		if ((references.size+references1.size == 0) && (rule.getRulenumber() != 1))
 			warning(unusedRuleDescription, EbnfPackage$Literals::RULE__NAME, unusedRuleDescription, rule.name);
 	}
@@ -214,7 +221,7 @@
 
 		var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
-
+		var List<Rule> references1 = EbnfAnalysisUtils.findReferences(rule,resourceDescriptions);
 		if (EbnfAnalysisUtils.isPassthroughRule(rule) && rule.rulenumber != 1) {
-			if (references.size() == 0) {
+			if (references.size+references1.size == 0) {
 				warning(unreferencedPassthroughRuleDescription, EbnfPackage$Literals::RULE__NAME);
 			} else {
