Index: /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/autorenumber/AutoRenumberRefactoringProcessor.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/autorenumber/AutoRenumberRefactoringProcessor.java	(revision 17)
+++ /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/autorenumber/AutoRenumberRefactoringProcessor.java	(revision 18)
@@ -5,4 +5,5 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.ltk.core.refactoring.Change;
@@ -19,8 +20,9 @@
 import org.eclipse.xtext.parsetree.AbstractNode;
 import org.eclipse.xtext.parsetree.CompositeNode;
+import org.eclipse.xtext.parsetree.NodeUtil;
 import org.eclipse.xtext.ui.editor.XtextEditor;
 import org.eclipse.xtext.ui.editor.model.XtextDocument;
 
-import de.ugoe.cs.swe.bnftools.ebnf.Rule;
+import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry;
 
 public class AutoRenumberRefactoringProcessor extends RefactoringProcessor {
@@ -113,6 +115,13 @@
 		for (int i=0; i < rootNode.getChildren().size(); i++) {
 			AbstractNode child = rootNode.getChildren().get(i);
-			if (!(child.getElement() instanceof Rule))
+			EObject element = child.getElement();
+			if (!(element instanceof BnfEntry))
 				continue;
+			BnfEntry bnfEntry = (BnfEntry) element;
+			if (bnfEntry.getRule() == null)
+				continue;
+			
+			child = NodeUtil.getNodeAdapter(bnfEntry.getRule()).getParserNode();
+			
 			String ruleText;
 			try {
Index: /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/inlinesinglereferencedrules/InlineSingleReferencedRulesRefactoringHandler.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/inlinesinglereferencedrules/InlineSingleReferencedRulesRefactoringHandler.java	(revision 17)
+++ /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/inlinesinglereferencedrules/InlineSingleReferencedRulesRefactoringHandler.java	(revision 18)
@@ -22,4 +22,5 @@
 import com.google.inject.Inject;
 
+import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry;
 import de.ugoe.cs.swe.bnftools.ebnf.Rule;
 import de.ugoe.cs.swe.bnftools.ui.quickfix.processors.InlineRulesProcessor;
@@ -52,4 +53,14 @@
 		for (int i=0; i < rootNode.getParserNode().getChildren().size(); i++) {
 			AbstractNode currentNode = rootNode.getParserNode().getChildren().get(i);
+
+			EObject element = currentNode.getElement();
+			if (!(element instanceof BnfEntry))
+				continue;
+			BnfEntry bnfEntry = (BnfEntry) element;
+			if (bnfEntry.getRule() == null)
+				continue;
+			
+			currentNode = NodeUtil.getNodeAdapter(bnfEntry.getRule()).getParserNode();
+
 			if (currentNode.getElement() instanceof Rule) {
 				Rule rule = (Rule) currentNode.getElement();
Index: /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/inlinetokenrules/InlineTokenRulesRefactoringHandler.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/inlinetokenrules/InlineTokenRulesRefactoringHandler.java	(revision 17)
+++ /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/inlinetokenrules/InlineTokenRulesRefactoringHandler.java	(revision 18)
@@ -23,4 +23,5 @@
 
 import de.ugoe.cs.swe.bnftools.analysis.EbnfAnalysisUtils;
+import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry;
 import de.ugoe.cs.swe.bnftools.ebnf.Rule;
 import de.ugoe.cs.swe.bnftools.ui.refactoring.generic.GenericRefactoring;
@@ -51,4 +52,14 @@
 		for (int i=0; i < rootNode.getParserNode().getChildren().size(); i++) {
 			AbstractNode currentNode = rootNode.getParserNode().getChildren().get(i);
+
+			EObject element = currentNode.getElement();
+			if (!(element instanceof BnfEntry))
+				continue;
+			BnfEntry bnfEntry = (BnfEntry) element;
+			if (bnfEntry.getRule() == null)
+				continue;
+			
+			currentNode = NodeUtil.getNodeAdapter(bnfEntry.getRule()).getParserNode();
+
 			if (currentNode.getElement() instanceof Rule) {
 				Rule rule = (Rule) currentNode.getElement();
Index: /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/removeunusedrules/RemoveUnusedRulesRefactoringHandler.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/removeunusedrules/RemoveUnusedRulesRefactoringHandler.java	(revision 17)
+++ /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/removeunusedrules/RemoveUnusedRulesRefactoringHandler.java	(revision 18)
@@ -22,4 +22,5 @@
 import com.google.inject.Inject;
 
+import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry;
 import de.ugoe.cs.swe.bnftools.ebnf.Rule;
 import de.ugoe.cs.swe.bnftools.ui.quickfix.processors.RemoveUnusedRulesProcessor;
@@ -52,4 +53,14 @@
 		for (int i=0; i < rootNode.getParserNode().getChildren().size(); i++) {
 			AbstractNode currentNode = rootNode.getParserNode().getChildren().get(i);
+			
+			EObject element = currentNode.getElement();
+			if (!(element instanceof BnfEntry))
+				continue;
+			BnfEntry bnfEntry = (BnfEntry) element;
+			if (bnfEntry.getRule() == null)
+				continue;
+			
+			currentNode = NodeUtil.getNodeAdapter(bnfEntry.getRule()).getParserNode();
+			
 			if (currentNode.getElement() instanceof Rule) {
 				Rule rule = (Rule) currentNode.getElement();
Index: /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/replacepassthroughrules/ReplaceAllPassthroughRulesRefactoringHandler.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/replacepassthroughrules/ReplaceAllPassthroughRulesRefactoringHandler.java	(revision 17)
+++ /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/replacepassthroughrules/ReplaceAllPassthroughRulesRefactoringHandler.java	(revision 18)
@@ -23,4 +23,5 @@
 
 import de.ugoe.cs.swe.bnftools.analysis.EbnfAnalysisUtils;
+import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry;
 import de.ugoe.cs.swe.bnftools.ebnf.Rule;
 import de.ugoe.cs.swe.bnftools.ui.quickfix.processors.ReplacePassthroughRuleProcessor;
@@ -55,4 +56,14 @@
 		for (int i=0; i < rootNode.getParserNode().getChildren().size(); i++) {
 			AbstractNode currentNode = rootNode.getParserNode().getChildren().get(i);
+			
+			EObject element = currentNode.getElement();
+			if (!(element instanceof BnfEntry))
+				continue;
+			BnfEntry bnfEntry = (BnfEntry) element;
+			if (bnfEntry.getRule() == null)
+				continue;
+			
+			currentNode = NodeUtil.getNodeAdapter(bnfEntry.getRule()).getParserNode();
+			
 			if (currentNode.getElement() instanceof Rule) {
 				Rule rule = (Rule) currentNode.getElement();
Index: /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/uppercasetokenrules/UppercaseTokenRulesRefactoringHandler.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/uppercasetokenrules/UppercaseTokenRulesRefactoringHandler.java	(revision 17)
+++ /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/refactoring/uppercasetokenrules/UppercaseTokenRulesRefactoringHandler.java	(revision 18)
@@ -23,4 +23,5 @@
 
 import de.ugoe.cs.swe.bnftools.analysis.EbnfAnalysisUtils;
+import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry;
 import de.ugoe.cs.swe.bnftools.ebnf.Rule;
 import de.ugoe.cs.swe.bnftools.ui.refactoring.generic.GenericRefactoring;
@@ -51,4 +52,15 @@
 		for (int i=0; i < rootNode.getParserNode().getChildren().size(); i++) {
 			AbstractNode currentNode = rootNode.getParserNode().getChildren().get(i);
+
+			EObject element = currentNode.getElement();
+			if (!(element instanceof BnfEntry))
+				continue;
+			BnfEntry bnfEntry = (BnfEntry) element;
+			if (bnfEntry.getRule() == null)
+				continue;
+			
+			currentNode = NodeUtil.getNodeAdapter(bnfEntry.getRule()).getParserNode();
+
+			
 			if (currentNode.getElement() instanceof Rule) {
 				Rule rule = (Rule) currentNode.getElement();
Index: /trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfJavaValidator.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfJavaValidator.java	(revision 17)
+++ /trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfJavaValidator.java	(revision 18)
@@ -351,44 +351,4 @@
 		//TODO: currently compares complete rules and not subrules
 		
-		CompositeNode node = NodeUtil.getNodeAdapter(rule).getParserNode();
-		CompositeNode root = node.getParent();
-		
-		AbstractNode last = node.getChildren().get(
-				node.getChildren().size() - 1);
-
-		if (!(last instanceof CompositeNode))
-			return;
-
-		CompositeNode rightHandSideNode = (CompositeNode) last;
-		String rightHandSideText = rightHandSideNode.serialize().trim()
-				.replaceAll("[ \t\n\r]", "");
-
-		for (int i = 0; i < root.getChildren().size(); i++) {
-			if (root.getChildren().get(i) == node)
-				continue;
-			if (root.getChildren().get(i) == null)
-				continue;
-			if (!(root.getChildren().get(i) instanceof CompositeNode))
-				continue;
-			
-			CompositeNode child = (CompositeNode) root.getChildren().get(i);
-			
-			AbstractNode childLastChild = child.getChildren().get(
-					child.getChildren().size() - 1);
-			if (childLastChild instanceof CompositeNode) {
-				CompositeNode childLastChildCompositeNode = (CompositeNode) childLastChild;
-				String text = childLastChildCompositeNode.serialize().trim()
-						.replaceAll("[ \t\n\r]", "");
-				if (text.equals(rightHandSideText)) {
-					Rule matchingRule = (Rule) child.getElement();
-					String description = EbnfJavaValidator.duplicateSubRulesDescription
-							+ " with rule "
-							+ matchingRule.getRulenumber()
-							+ " (Line "
-							+ child.getLine() + ")";
-					warning(description, 1, description);
-				}
-			}
-		}
 	}
 	
