[145697] refactoring an element from an inline schema doesn't update the declaration (only the reference)
diff --git a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/XMLSearchPattern.java b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/XMLSearchPattern.java
index 9b60c9e..e3b58e1 100644
--- a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/XMLSearchPattern.java
+++ b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/XMLSearchPattern.java
@@ -20,20 +20,30 @@
 	private String attributeName = null;
 	private String searchName = null;
 	private String searchNamespace = null;
+	private String parentName = null;
     private int depth = -1;
+
+    public XMLSearchPattern(String elementNamespace, String parentElementName,String elementName, String attributeName) {
+    	this(elementNamespace, parentElementName, elementName, attributeName, -1);
+    }
 	
 	public XMLSearchPattern(String elementNamespace, String elementName, String attributeName) {
-       this(elementNamespace, elementName, attributeName, -1);
+       this(elementNamespace, null, elementName, attributeName, -1);
     }
     
     public XMLSearchPattern(String elementNamespace, String elementName, String attributeName, int depth) {
+    	this(elementNamespace, null, elementName, attributeName, depth);       
+    }
+           
+    private XMLSearchPattern(String elementNamespace, String parentElementName, String elementName, String attributeName, int depth) {
         super();
         this.attributeName = attributeName;
         this.elementName = elementName;
+        this.parentName = parentElementName;
         this.elementNamespace = elementNamespace;
         this.depth = depth;
-    }    
-	
+    }
+    
 	public XMLSearchPattern(){
 		
 	}
@@ -87,6 +97,14 @@
   {
     this.depth = depth;
   }
+
+public String getParentName() {
+	return parentName;
+}
+
+public void setParentName(String parentName) {
+	this.parentName = parentName;
+}
 	
 
 	
diff --git a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/matching/SAXSearchElement.java b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/matching/SAXSearchElement.java
index f4dc81d..a9ec4a1 100644
--- a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/matching/SAXSearchElement.java
+++ b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/matching/SAXSearchElement.java
@@ -21,6 +21,7 @@
 	String elementNamespace;
 	Map namespaceMap = new HashMap(); // Map of string prefix keys and namespace
 	String targetNamespace = ""; //$NON-NLS-1$
+	String parentName;
     int depth = -1;
 	
 	public SAXSearchElement() {
@@ -64,6 +65,12 @@
   {
     this.depth = depth;
   }
+public String getParentName() {
+	return parentName;
+}
+public void setParentName(String parentName) {
+	this.parentName = parentName;
+}
 	
 	
 	
diff --git a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/matching/XMLSearchPatternMatcher.java b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/matching/XMLSearchPatternMatcher.java
index e775bcd..0b9c3d3 100644
--- a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/matching/XMLSearchPatternMatcher.java
+++ b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/matching/XMLSearchPatternMatcher.java
@@ -76,6 +76,7 @@
 		pattern.setElementName(saxElement.getElementName());
 		pattern.setElementNamespace(saxElement.getElementNamespace());
         pattern.setDepth(saxElement.getDepth());
+        pattern.setParentName(saxElement.getParentName());
 		String actualValue = saxElement.getAttributes().getValue(pattern.getAttributeName());
 		 if(actualValue != null){
 				int n = actualValue.indexOf(":"); //$NON-NLS-1$
@@ -169,9 +170,9 @@
 			XMLSearchPattern decodedPattern = (XMLSearchPattern)pattern;
             if(searchPattern.getElementName().equals(decodedPattern.getElementName()) &&                    
 					searchPattern.getElementNamespace().equals(decodedPattern.getElementNamespace())){                
-                if(searchPattern.getDepth() > 0 &&
-                   decodedPattern.getDepth() > 0 &&
-                   searchPattern.getDepth() != decodedPattern.getDepth())
+                if(searchPattern.getParentName() != null &&
+                   decodedPattern.getParentName() != null &&
+                   !searchPattern.getParentName().equals(decodedPattern.getParentName()))
                 {
                   return false;  
                 }  
diff --git a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/quickscan/XMLQuickScanContentHandler.java b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/quickscan/XMLQuickScanContentHandler.java
index ff05cc4..65d87cd 100644
--- a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/quickscan/XMLQuickScanContentHandler.java
+++ b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/quickscan/XMLQuickScanContentHandler.java
@@ -13,6 +13,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Stack;
 
 import org.eclipse.wst.common.core.search.document.ComponentDeclarationEntry;
 import org.eclipse.wst.common.core.search.document.ComponentReferenceEntry;
@@ -43,9 +44,8 @@
 	private SAXSearchElement searchElement = new SAXSearchElement();
 
 	private boolean hasMatch = false;
-	private  StringBuffer currentPath = new StringBuffer();
+	private Stack currentPath = new Stack();
 	private PatternMatcher matcher;
-    private int depth = 0;
 	
 	public static final String XMLSCHEMA_NAMESPACE = "http://www.w3.org/2001/XMLSchema"; //$NON-NLS-1$
   public static final String WSDL_NAMESPACE = "http://schemas.xmlsoap.org/wsdl/"; //$NON-NLS-1$
@@ -70,10 +70,7 @@
 
 	public void startElement(String uri, String localName, String qName,
 			Attributes attributes) throws SAXException
-	{
-	    depth++;
-		currentPath.append("/" + localName); //$NON-NLS-1$
-
+	{	
 		// Search for targetNamespace if we haven't encountered it yet.
 		if (targetNamespace.equals("")) //$NON-NLS-1$
 		{
@@ -124,7 +121,11 @@
 		searchElement.setAttributes(attributes);
 		searchElement.setNamespaceMap(namespaceMap);
 		searchElement.setTargetNamespace(targetNamespace);
-        searchElement.setDepth(depth);
+		if (currentPath.size() > 0)
+		{
+		  String parentName = (String)currentPath.peek();
+		  searchElement.setParentName(parentName);
+		}			
 	
 
 		if(matcher != null){
@@ -150,7 +151,7 @@
 				}
 			}
 		}
-		
+		currentPath.push(localName); //$NON-NLS-1$		
 	}
 
   private String getLocationAttributeName(String uri)
@@ -177,9 +178,7 @@
 	public void endElement(String uri, String localName, String qName)
 			throws SAXException
 	{
-		int slashIndex = currentPath.lastIndexOf("/"); //$NON-NLS-1$
-		currentPath.delete(slashIndex, currentPath.length());
-        depth--;
+		currentPath.pop();
 	}
 
 	/**
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java
index 95dcb48..f589b57 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java
@@ -14,6 +14,7 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+
 import org.eclipse.wst.common.core.search.pattern.SearchPattern;
 import org.eclipse.wst.xml.core.internal.search.ComponentSearchContributor;
 import org.eclipse.wst.xml.core.internal.search.XMLSearchPattern;
@@ -64,7 +65,7 @@
 		declarations = new HashMap();
 		String ns = IXSDSearchConstants.XMLSCHEMA_NAMESPACE;
 
-		SearchPattern pattern = new XMLSearchPattern( ns, XSDConstants.ELEMENT_ELEMENT_TAG, XSDConstants.NAME_ATTRIBUTE, 2);
+		SearchPattern pattern = new XMLSearchPattern( ns, XSDConstants.SCHEMA_ELEMENT_TAG, XSDConstants.ELEMENT_ELEMENT_TAG, XSDConstants.NAME_ATTRIBUTE);
 		declarations.put(IXSDSearchConstants.ELEMENT_META_NAME, pattern);
 
 		pattern = new XMLSearchPattern(ns, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDConstants.NAME_ATTRIBUTE);