[213471] Renaming of a port type affects all port types with the same name
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/RenameComponentProcessor.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/RenameComponentProcessor.java
index 80dcf6f..ae19995 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/RenameComponentProcessor.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/RenameComponentProcessor.java
@@ -14,7 +14,6 @@
 //import com.ibm.icu.text.Collator;
 import java.util.ArrayList;
 import java.util.Arrays;
-//import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -30,11 +29,11 @@
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.jface.text.Position;
 import org.eclipse.ltk.core.refactoring.Change;
 import org.eclipse.ltk.core.refactoring.CompositeChange;
 import org.eclipse.ltk.core.refactoring.RefactoringStatus;
 import org.eclipse.ltk.core.refactoring.TextChange;
-//import org.eclipse.ltk.core.refactoring.TextFileChange;
 import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;
 import org.eclipse.ltk.core.refactoring.participants.ParticipantManager;
 import org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant;
@@ -51,6 +50,7 @@
 import org.eclipse.wst.common.core.search.scope.SelectionSearchScope;
 import org.eclipse.wst.common.core.search.scope.WorkspaceSearchScope;
 import org.eclipse.wst.common.core.search.util.CollectingSearchRequestor;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
 import org.eclipse.wst.xml.core.internal.search.XMLComponentDeclarationPattern;
 import org.eclipse.wst.xml.core.internal.search.XMLComponentReferencePattern;
 import org.eclipse.wst.xsd.ui.internal.refactor.Checks;
@@ -134,16 +134,34 @@
         }  
 		searchEngine.search(pattern, requestor, scope, map, new NullProgressMonitor());
 		List results = requestor.getResults();
+		
+		// more than one declaration found, so use offset as additional check
+		Position offsetPosition = null;
+		if (results.size() > 1) {
+		    IDOMElement selectedElement = selectedComponent.getElement();
+		    if (selectedElement != null) {
+		    	int startOffset = selectedElement.getStartOffset();
+		    	offsetPosition = new Position(startOffset, (selectedElement.getEndOffset() - startOffset));
+		    }
+		}
+		
 		for (Iterator iter = results.iterator(); iter.hasNext();) {
 			SearchMatch match = (SearchMatch) iter.next();
 			if (match != null) {
-				TextChange textChange = manager.get(match.getFile());
-				String newName = getNewElementName();
-				newName = quoteString(newName);
-
-				ReplaceEdit replaceEdit = new ReplaceEdit(match.getOffset(), match.getLength(), newName);
-				String editName = RefactoringMessages.getString("RenameComponentProcessor.Component_Refactoring_update_declatation");
-				TextChangeCompatibility.addTextEdit(textChange, editName, replaceEdit);
+				boolean addTextChange = true;
+				// additional check to verify correct declaration is changed
+				if (offsetPosition != null) {
+					addTextChange = offsetPosition.overlapsWith(match.getOffset(), match.getLength());  
+				}
+				if (addTextChange) {
+					TextChange textChange = manager.get(match.getFile());
+					String newName = getNewElementName();
+					newName = quoteString(newName);
+	
+					ReplaceEdit replaceEdit = new ReplaceEdit(match.getOffset(), match.getLength(), newName);
+					String editName = RefactoringMessages.getString("RenameComponentProcessor.Component_Refactoring_update_declatation");
+					TextChangeCompatibility.addTextEdit(textChange, editName, replaceEdit);
+				}
 			}
 		}
 	}