diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/.classpath b/testplugins/org.eclipse.jdt.ui.tests.refactoring/.classpath
new file mode 100644
index 0000000..728d33d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="test cases"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins" nonaccessible="org/eclipse/core/internal/**|org/eclipse/ui/internal/**"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/.project b/testplugins/org.eclipse.jdt.ui.tests.refactoring/.project
new file mode 100644
index 0000000..3437cd0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jdt.ui.tests.refactoring</name>
+	<comment></comment>
+	<projects></projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/about.html b/testplugins/org.eclipse.jdt.ui.tests.refactoring/about.html
new file mode 100644
index 0000000..1b374ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/about.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>May 12, 2006</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+<h3>Third Party Content</h3>
+
+<p>The Content includes items that have been sourced from third parties as set out below. If you 
+did not receive this Content directly from the Eclipse Foundation, the following is provided 
+for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
+terms and conditions of use.</p>
+
+<h4>JUnit 3.8.1</h4>
+
+<p>The plug-in is accompanied by software developed by JUnit.org.  The JUnit 3.8.1 code included with the plug-in includes no modifications.
+Your use of JUnit 3.8.1 in both source and binary code form contained in the plug-in is subject to the terms and conditions of the 
+Common Public License Version 1.0 (&quot;CPL&quot;).  A copy of the CPL is available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>.
+The source code is located in testresources/junit381-noUI-src.zip.</p>
+
+<p>i) IBM effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;</p>
+
+<p>ii) IBM effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;</p>
+
+<p>iii) IBM states that any provisions which differ from the CPL are offered by that IBM alone and not by any other party.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/build.properties b/testplugins/org.eclipse.jdt.ui.tests.refactoring/build.properties
new file mode 100644
index 0000000..c06e624
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2000, 2009 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+bin.includes = plugin.xml,\
+               test.xml,\
+               about.html,\
+               resources/,\
+               *.jar,\
+               META-INF/,\
+               plugin.properties
+source.refactoringtests.jar = test cases/
+javacWarnings.refactoringtests.jar=-deadCode
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/cpl-v10.html b/testplugins/org.eclipse.jdt.ui.tests.refactoring/cpl-v10.html
new file mode 100644
index 0000000..455e7b0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/cpl-v10.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+<HEAD>
+<TITLE>Common Public License - v 1.0</TITLE>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</HEAD>
+
+<BODY BGCOLOR="#FFFFFF" VLINK="#800000">
+
+
+<P ALIGN="CENTER"><B>Common Public License - v 1.0</B>
+<P><B></B><FONT SIZE="3"></FONT>
+<P><FONT SIZE="3"></FONT><FONT SIZE="2">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT").  ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.</FONT>
+<P><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2"><B>1.  DEFINITIONS</B></FONT>
+<P><FONT SIZE="2">"Contribution" means:</FONT>
+
+<UL><FONT SIZE="2">a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and<BR CLEAR="LEFT">
+b) in the case of each subsequent Contributor:</FONT></UL>
+
+
+<UL><FONT SIZE="2">i)	 	changes to the Program, and</FONT></UL>
+
+
+<UL><FONT SIZE="2">ii)		additions to the Program;</FONT></UL>
+
+
+<UL><FONT SIZE="2">where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.  </FONT><FONT SIZE="2">A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf.  </FONT><FONT SIZE="2">Contributions do not include additions to the Program which:  (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.  </FONT></UL>
+
+<P><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2">"Contributor" means any person or entity that distributes the Program.</FONT>
+<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2">"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.  </FONT>
+<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2"></FONT><FONT SIZE="2">"Program" means the Contributions distributed in accordance with this Agreement.</FONT>
+<P><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2">"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.</FONT>
+<P><FONT SIZE="2"><B></B></FONT>
+<P><FONT SIZE="2"><B>2.  GRANT OF RIGHTS</B></FONT>
+
+<UL><FONT SIZE="2"></FONT><FONT SIZE="2">a)	</FONT><FONT SIZE="2">Subject to the terms of this Agreement, each Contributor hereby grants</FONT><FONT SIZE="2"> Recipient a non-exclusive, worldwide, royalty-free copyright license to</FONT><FONT SIZE="2" COLOR="#FF0000"> </FONT><FONT SIZE="2">reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.</FONT></UL>
+
+
+<UL><FONT SIZE="2"></FONT></UL>
+
+
+<UL><FONT SIZE="2"></FONT><FONT SIZE="2">b) 	Subject to the terms of this Agreement, each Contributor hereby grants </FONT><FONT SIZE="2">Recipient a non-exclusive, worldwide,</FONT><FONT SIZE="2" COLOR="#008000"> </FONT><FONT SIZE="2">royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form.  This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents.  The patent license shall not apply to any other combinations which include the Contribution.  No hardware per se is licensed hereunder.   </FONT></UL>
+
+
+<UL><FONT SIZE="2"></FONT></UL>
+
+
+<UL><FONT SIZE="2">c)	Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity.  Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise.  As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any.  For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.</FONT></UL>
+
+
+<UL><FONT SIZE="2"></FONT></UL>
+
+
+<UL><FONT SIZE="2">d)	Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. </FONT></UL>
+
+
+<UL><FONT SIZE="2"></FONT></UL>
+
+<P><FONT SIZE="2"><B>3.  REQUIREMENTS</B></FONT>
+<P><FONT SIZE="2"><B></B>A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:</FONT>
+
+<UL><FONT SIZE="2">a)	it complies with the terms and conditions of this Agreement; and</FONT></UL>
+
+
+<UL><FONT SIZE="2">b)	its license agreement:</FONT></UL>
+
+
+<UL><FONT SIZE="2">i)	effectively disclaims</FONT><FONT SIZE="2"> on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; </FONT></UL>
+
+
+<UL><FONT SIZE="2">ii) 	effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; </FONT></UL>
+
+
+<UL><FONT SIZE="2">iii)</FONT><FONT SIZE="2">	states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and</FONT></UL>
+
+
+<UL><FONT SIZE="2">iv)	states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.</FONT><FONT SIZE="2" COLOR="#0000FF"> </FONT><FONT SIZE="2" COLOR="#FF0000"></FONT></UL>
+
+
+<UL><FONT SIZE="2" COLOR="#FF0000"></FONT><FONT SIZE="2"></FONT></UL>
+
+<P><FONT SIZE="2">When the Program is made available in source code form:</FONT>
+
+<UL><FONT SIZE="2">a)	it must be made available under this Agreement; and </FONT></UL>
+
+
+<UL><FONT SIZE="2">b)	a copy of this Agreement must be included with each copy of the Program.  </FONT></UL>
+
+<P><FONT SIZE="2"></FONT><FONT SIZE="2" COLOR="#0000FF"><STRIKE></STRIKE></FONT>
+<P><FONT SIZE="2" COLOR="#0000FF"><STRIKE></STRIKE></FONT><FONT SIZE="2">Contributors may not remove or alter any copyright notices contained within the Program.  </FONT>
+<P><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2">Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.  </FONT>
+<P><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2"><B>4.  COMMERCIAL DISTRIBUTION</B></FONT>
+<P><FONT SIZE="2">Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like.  While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors.   Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering.  The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement.  In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations.  The Indemnified Contributor may participate in any such claim at its own expense.</FONT>
+<P><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2">For example, a Contributor might include the Program in a commercial product offering, Product X.  That Contributor is then a Commercial Contributor.  If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.  Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.</FONT>
+<P><FONT SIZE="2"></FONT><FONT SIZE="2" COLOR="#0000FF"></FONT>
+<P><FONT SIZE="2" COLOR="#0000FF"></FONT><FONT SIZE="2"><B>5.  NO WARRANTY</B></FONT>
+<P><FONT SIZE="2">EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is</FONT><FONT SIZE="2"> solely responsible for determining the appropriateness of using and distributing </FONT><FONT SIZE="2">the Program</FONT><FONT SIZE="2"> and assumes all risks associated with its exercise of rights under this Agreement</FONT><FONT SIZE="2">, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, </FONT><FONT SIZE="2">programs or equipment, and unavailability or interruption of operations</FONT><FONT SIZE="2">.  </FONT><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2"></FONT><FONT SIZE="2"><B>6.  DISCLAIMER OF LIABILITY</B></FONT>
+<P><FONT SIZE="2"></FONT><FONT SIZE="2">EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES </FONT><FONT SIZE="2">(INCLUDING WITHOUT LIMITATION LOST PROFITS),</FONT><FONT SIZE="2"> HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</FONT>
+<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2"><B>7.  GENERAL</B></FONT>
+<P><FONT SIZE="2"></FONT><FONT SIZE="2">If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.</FONT>
+<P><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2">If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed.  In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. </FONT><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2">All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance.  If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable.  However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.  </FONT><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2"></FONT><FONT SIZE="2">Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted  and may only be modified in the following manner. The Agreement Steward reserves the right to </FONT><FONT SIZE="2">publish new versions (including revisions) of this Agreement from time to </FONT><FONT SIZE="2">time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward.   IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity.  </FONT><FONT SIZE="2">Each new version of the Agreement will be given a distinguishing version number.  The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new </FONT><FONT SIZE="2">version.  </FONT><FONT SIZE="2">Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, </FONT><FONT SIZE="2">by implication, estoppel or otherwise</FONT><FONT SIZE="2">.</FONT><FONT SIZE="2">  All rights in the Program not expressly granted under this Agreement are reserved.</FONT>
+<P><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2">This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose.  Each party waives its rights to a jury trial in any resulting litigation.</FONT>
+<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
+<P><FONT SIZE="2"></FONT>
+
+</BODY>
+
+</HTML>
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/plugin.properties b/testplugins/org.eclipse.jdt.ui.tests.refactoring/plugin.properties
new file mode 100644
index 0000000..fe56707
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/plugin.properties
@@ -0,0 +1,13 @@
+###############################################################################
+# Copyright (c) 2000, 2005 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+
+Plugin.name= Refactoring Tests Plug-in
+Plugin.providerName= Eclipse.org
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/plugin.xml b/testplugins/org.eclipse.jdt.ui.tests.refactoring/plugin.xml
new file mode 100644
index 0000000..2d66991
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/plugin.xml
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+     <extension point="org.eclipse.ltk.core.refactoring.renameParticipants">
+      <renameParticipant
+            class="org.eclipse.jdt.ui.tests.refactoring.TestRenameParticipantShared"
+            name="org.eclipse.jdt.ui.tests.refactoring.TestRenameParticipantShared"
+            id="org.eclipse.jdt.ui.tests.refactoring.TestRenameParticipantShared">
+         <enablement>
+           <with variable="affectedNatures">
+             <iterate operator="or">
+               <equals value="org.eclipse.jdt.core.javanature"/>
+             </iterate>
+           </with>
+           <with variable="element">
+             <or>
+               <instanceof value="org.eclipse.core.resources.IResource"/>
+               <instanceof value="org.eclipse.jdt.core.IJavaElement"/>
+             </or>
+           </with>
+         </enablement>
+      </renameParticipant>
+      <renameParticipant
+            class="org.eclipse.jdt.ui.tests.refactoring.TestRenameParticipantSingle"
+            name="org.eclipse.jdt.ui.tests.refactoring.TestRenameParticipantSingle"
+            id="org.eclipse.jdt.ui.tests.refactoring.TestRenameParticipantSingle">
+         <enablement>
+           <with variable="affectedNatures">
+             <iterate operator="or">
+               <equals value="org.eclipse.jdt.core.javanature"/>
+             </iterate>
+           </with>
+           <with variable="element">
+             <or>
+               <instanceof value="org.eclipse.core.resources.IResource"/>
+               <instanceof value="org.eclipse.jdt.core.IJavaElement"/>
+             </or>
+           </with>
+         </enablement>
+      </renameParticipant>
+   </extension>
+   <extension point="org.eclipse.ltk.core.refactoring.moveParticipants">
+      <moveParticipant
+            class="org.eclipse.jdt.ui.tests.refactoring.TestMoveParticipantShared"
+            name="org.eclipse.jdt.ui.tests.refactoring.TestMoveParticipantShared"
+            id="org.eclipse.jdt.ui.tests.refactoring.TestMoveParticipantShared">
+         <enablement>
+           <with variable="affectedNatures">
+             <iterate operator="or">
+               <equals value="org.eclipse.jdt.core.javanature"/>
+             </iterate>
+           </with>
+           <with variable="element">
+             <or>
+               <instanceof value="org.eclipse.core.resources.IResource"/>
+               <instanceof value="org.eclipse.jdt.core.IJavaElement"/>
+             </or>
+           </with>
+         </enablement>
+      </moveParticipant>
+       <moveParticipant
+            class="org.eclipse.jdt.ui.tests.refactoring.TestMoveParticipantSingle"
+            name="org.eclipse.jdt.ui.tests.refactoring.TestMoveParticipantSingle"
+            id="org.eclipse.jdt.ui.tests.refactoring.TestMoveParticipantSingle">
+         <enablement>
+           <with variable="affectedNatures">
+             <iterate operator="or">
+               <equals value="org.eclipse.jdt.core.javanature"/>
+             </iterate>
+           </with>
+           <with variable="element">
+             <or>
+               <instanceof value="org.eclipse.core.resources.IResource"/>
+               <instanceof value="org.eclipse.jdt.core.IJavaElement"/>
+             </or>
+           </with>
+         </enablement>
+      </moveParticipant>
+   </extension>
+   <extension point="org.eclipse.ltk.core.refactoring.createParticipants">
+      <createParticipant
+            class="org.eclipse.jdt.ui.tests.refactoring.TestCreateParticipantShared"
+            name="org.eclipse.jdt.ui.tests.refactoring.TestCreateParticipantShared"
+            id="org.eclipse.jdt.ui.tests.refactoring.TestCreateParticipantShared">
+         <enablement>
+           <with variable="affectedNatures">
+             <iterate operator="or">
+               <equals value="org.eclipse.jdt.core.javanature"/>
+             </iterate>
+           </with>
+           <with variable="element">
+             <or>
+               <instanceof value="org.eclipse.core.resources.IResource"/>
+               <instanceof value="org.eclipse.jdt.core.IJavaElement"/>
+             </or>
+           </with>
+         </enablement>
+      </createParticipant>
+      <createParticipant
+            class="org.eclipse.jdt.ui.tests.refactoring.TestCreateParticipantSingle"
+            name="org.eclipse.jdt.ui.tests.refactoring.TestCreateParticipantSingle"
+            id="org.eclipse.jdt.ui.tests.refactoring.TestCreateParticipantSingle">
+         <enablement>
+           <with variable="affectedNatures">
+             <iterate operator="or">
+               <equals value="org.eclipse.jdt.core.javanature"/>
+             </iterate>
+           </with>
+           <with variable="element">
+             <or>
+               <instanceof value="org.eclipse.core.resources.IResource"/>
+               <instanceof value="org.eclipse.jdt.core.IJavaElement"/>
+             </or>
+           </with>
+         </enablement>
+      </createParticipant>
+   </extension>
+   <extension point="org.eclipse.ltk.core.refactoring.deleteParticipants">
+      <deleteParticipant
+            class="org.eclipse.jdt.ui.tests.refactoring.TestDeleteParticipantShared"
+            name="org.eclipse.jdt.ui.tests.refactoring.TestDeleteParticipantShared"
+            id="org.eclipse.jdt.ui.tests.refactoring.TestDeleteParticipantShared">
+         <enablement>
+           <with variable="affectedNatures">
+             <iterate operator="or">
+               <equals value="org.eclipse.jdt.core.javanature"/>
+             </iterate>
+           </with>
+           <with variable="element">
+             <or>
+               <instanceof value="org.eclipse.core.resources.IResource"/>
+               <instanceof value="org.eclipse.jdt.core.IJavaElement"/>
+             </or>
+           </with>
+         </enablement>
+      </deleteParticipant>
+       <deleteParticipant
+            class="org.eclipse.jdt.ui.tests.refactoring.TestDeleteParticipantSingle"
+            name="org.eclipse.jdt.ui.tests.refactoring.TestDeleteParticipantSingle"
+            id="org.eclipse.jdt.ui.tests.refactoring.TestDeleteParticipantSingle">
+         <enablement>
+           <with variable="affectedNatures">
+             <iterate operator="or">
+               <equals value="org.eclipse.jdt.core.javanature"/>
+             </iterate>
+           </with>
+           <with variable="element">
+             <or>
+               <instanceof value="org.eclipse.core.resources.IResource"/>
+               <instanceof value="org.eclipse.jdt.core.IJavaElement"/>
+             </or>
+           </with>
+         </enablement>
+      </deleteParticipant>
+   </extension>
+   <extension point="org.eclipse.ltk.core.refactoring.copyParticipants">
+      <copyParticipant
+            class="org.eclipse.jdt.ui.tests.refactoring.TestCopyParticipantShared"
+            name="org.eclipse.jdt.ui.tests.refactoring.TestCopyParticipantShared"
+            id="org.eclipse.jdt.ui.tests.refactoring.TestCopyParticipantShared"> 
+         <enablement>
+           <with variable="affectedNatures">
+             <iterate operator="or">
+               <equals value="org.eclipse.jdt.core.javanature"/>
+             </iterate>
+           </with>
+           <with variable="element">
+             <or>
+               <instanceof value="org.eclipse.core.resources.IResource"/>
+               <instanceof value="org.eclipse.core.resources.mapping.ResourceMapping"/>
+               <instanceof value="org.eclipse.jdt.core.IJavaElement"/>
+             </or>
+           </with>
+         </enablement>
+      </copyParticipant>
+      <copyParticipant
+            class="org.eclipse.jdt.ui.tests.refactoring.TestCopyParticipantSingle"
+            name="org.eclipse.jdt.ui.tests.refactoring.TestCopyParticipantSingle"
+            id="org.eclipse.jdt.ui.tests.refactoring.TestCopyParticipantSingle">
+         <enablement>
+           <with variable="affectedNatures">
+             <iterate operator="or">
+               <equals value="org.eclipse.jdt.core.javanature"/>
+             </iterate>
+           </with>
+           <with variable="element">
+             <or>
+               <instanceof value="org.eclipse.core.resources.IResource"/>
+               <instanceof value="org.eclipse.core.resources.mapping.ResourceMapping"/>
+               <instanceof value="org.eclipse.jdt.core.IJavaElement"/>
+             </or>
+           </with>
+         </enablement>
+      </copyParticipant>
+   </extension>
+   <extension point="org.eclipse.jdt.core.manipulation.changeMethodSignatureParticipants">
+      <changeMethodSignatureParticipant
+            class="org.eclipse.jdt.ui.tests.refactoring.TestChangeMethodSignaturParticipant"
+            name="org.eclipse.jdt.ui.tests.refactoring.TestChangeMethodSignataturParticipant"
+            id="org.eclipse.jdt.ui.tests.refactoring.TestChangeMethodSignataturParticipant">
+         <enablement>
+           <with variable="affectedNatures">
+             <iterate operator="or">
+               <equals value="org.eclipse.jdt.core.javanature"/>
+             </iterate>
+           </with>
+         </enablement>
+      </changeMethodSignatureParticipant>
+   </extension>
+   <extension
+         id="modelProvider"
+         name="TestModelProvider"
+         point="org.eclipse.core.resources.modelProviders">
+      <modelProvider
+            class="org.eclipse.jdt.ui.tests.refactoring.TestModelProvider"/>
+      <extends-model id="org.eclipse.core.resources.modelProvider"/>
+      <enablement>
+          <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+      </enablement>
+   </extension>
+   <extension point="org.eclipse.team.core.repository">
+   	<repository
+   		  id="org.eclipse.jdt.ui.tests.refactoring.refactoringTestRepositoryProvider"
+          class="org.eclipse.jdt.ui.tests.refactoring.infra.RefactoringTestRepositoryProvider">
+   	</repository>
+   
+   
+   </extension>
+   
+</plugin>
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test0/in/A.java
new file mode 100644
index 0000000..09d7beb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test0/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	private int f;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test0/out/A.java
new file mode 100644
index 0000000..54638c7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test0/out/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	private int g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test1/in/A.java
new file mode 100644
index 0000000..e7b1fae
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test1/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	private int f;
+	void m(){
+		f++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test1/out/A.java
new file mode 100644
index 0000000..62565c0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test1/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	private int g;
+	void m(){
+		g++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test10/in/A.java
new file mode 100644
index 0000000..1f173f4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test10/in/A.java
@@ -0,0 +1,16 @@
+package p;
+import java.util.List;
+
+class Test {
+	static class Element{
+	}
+	
+	static class A {
+		private final List<Element> fList;
+		
+		public A(List<Element> list) {
+			fList= list;
+		}
+	}
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test10/out/A.java
new file mode 100644
index 0000000..d96ffda
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test10/out/A.java
@@ -0,0 +1,16 @@
+package p;
+import java.util.List;
+
+class Test {
+	static class Element{
+	}
+	
+	static class A {
+		private final List<Element> fElements;
+		
+		public A(List<Element> list) {
+			fElements= list;
+		}
+	}
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test11/in/A.java
new file mode 100644
index 0000000..65cad7f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test11/in/A.java
@@ -0,0 +1,28 @@
+package p;
+import Test.Element;
+
+import java.util.List;
+
+class Test {
+	static class Element{
+	}
+	
+	static class A {
+		private final List<Element> fList;
+		
+		public A(List<Element> list) {
+			fList= list;
+		}
+		public List<Element> getList() {
+			return fList;
+		}
+		public void setList(List<Element> newList) {
+			fList= newList;
+		}
+	}
+	
+	{ 
+		A a= new A(new List<Element>());
+		a.setList(a.getList());
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test11/out/A.java
new file mode 100644
index 0000000..5f7db13
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test11/out/A.java
@@ -0,0 +1,26 @@
+package p;
+import java.util.List;
+
+class Test {
+	static class Element{
+	}
+	
+	static class A {
+		private final List<Element> fElements;
+		
+		public A(List<Element> list) {
+			fElements= list;
+		}
+		public List<Element> getElements() {
+			return fElements;
+		}
+		public void setElements(List<Element> newElements) {
+			fList= newElements;
+		}
+	}
+	
+	{ 
+		A a= new A(new List<Element>());
+		a.setElements(a.getElements());
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test2/in/A.java
new file mode 100644
index 0000000..9b8f37b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test2/in/A.java
@@ -0,0 +1,8 @@
+//no ref update
+package p;
+class A{
+	private int f;
+	void m(){
+		f++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test2/out/A.java
new file mode 100644
index 0000000..e243fcd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test2/out/A.java
@@ -0,0 +1,8 @@
+//no ref update
+package p;
+class A{
+	private int g;
+	void m(){
+		f++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test3/in/A.java
new file mode 100644
index 0000000..992a58e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test3/in/A.java
@@ -0,0 +1,18 @@
+package p;
+class A{
+	private int f;
+	/**
+	 * f f
+	 * @see #f
+	 * fgd 
+	 */
+	void m(){
+		/**
+		 * f f
+		 * @see #f
+		 * fgd 
+		 */
+		f++;//inc f
+		String g= "f";
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test3/out/A.java
new file mode 100644
index 0000000..001599c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test3/out/A.java
@@ -0,0 +1,18 @@
+package p;
+class A{
+	private int gg;
+	/**
+	 * gg gg
+	 * @see #gg
+	 * fgd 
+	 */
+	void m(){
+		/**
+		 * gg gg
+		 * @see #gg
+		 * fgd 
+		 */
+		gg++;//inc gg
+		String g= "gg";
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test4/in/A.java
new file mode 100644
index 0000000..4e9361f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test4/in/A.java
@@ -0,0 +1,17 @@
+package p;
+class A{
+	/**
+	 * @see #getMe()
+	 * @see #setMe(int)
+	 */
+	private int fMe; //use getMe and setMe to update fMe
+	
+	public int getMe() {
+		return fMe;
+	}
+	
+	/** @param me stored into {@link #fMe}*/
+	public void setMe(int me) {
+		fMe= me;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test4/out/A.java
new file mode 100644
index 0000000..224e8ee
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test4/out/A.java
@@ -0,0 +1,17 @@
+package p;
+class A{
+	/**
+	 * @see #getYou()
+	 * @see #setYou(int)
+	 */
+	private int fYou; //use getMe and setMe to update fMe
+	
+	public int getYou() {
+		return fYou;
+	}
+	
+	/** @param me stored into {@link #fYou}*/
+	public void setYou(int me) {
+		fYou= me;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test5/in/A.java
new file mode 100644
index 0000000..4bf4b08
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test5/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	private int fMe;
+	
+	public int getMe() {
+		return fMe;
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test5/out/A.java
new file mode 100644
index 0000000..852acc2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test5/out/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	private int fYou;
+	
+	public int getYou() {
+		return fYou;
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test6/in/A.java
new file mode 100644
index 0000000..947a233
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test6/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	private int fMe;
+	
+	public void setMe(int me) {
+		fMe= me;
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test6/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test6/out/A.java
new file mode 100644
index 0000000..00f75d4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test6/out/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	private int fYou;
+	
+	public void setYou(int me) {
+		fYou= me;
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test7/in/A.java
new file mode 100644
index 0000000..ddb5e06
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test7/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	private boolean fBig;
+	
+	public void setBig(boolean big) {
+		fBig= big;
+	}
+
+	public boolean isBig() {
+		return fBig;
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test7/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test7/out/A.java
new file mode 100644
index 0000000..ce85b2d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test7/out/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	private boolean fSmall;
+	
+	public void setSmall(boolean big) {
+		fSmall= big;
+	}
+
+	public boolean isSmall() {
+		return fSmall;
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test8/in/A.java
new file mode 100644
index 0000000..78fbddd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test8/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	static int f;
+	public static int getF() {
+		return f;
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test8/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test8/out/A.java
new file mode 100644
index 0000000..ceaf43c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test8/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	static int g;
+	public static int getG() {
+		return g;
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test9/in/A.java
new file mode 100644
index 0000000..d53e88f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test9/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	private boolean fBig;
+	
+	public void setBig(boolean big) {
+		fBig= big;
+	}
+
+	public boolean getBig() {
+		return fBig;
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test9/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test9/out/A.java
new file mode 100644
index 0000000..9f4462a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/test9/out/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	private boolean fSmall;
+	
+	public void setSmall(boolean big) {
+		fSmall= big;
+	}
+
+	public boolean getSmall() {
+		return fSmall;
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail0/in/A.java
new file mode 100644
index 0000000..331b5e7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail0/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	private int f;
+	private int g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail1/in/A.java
new file mode 100644
index 0000000..4400551
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail1/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	private int f;
+	private String g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail10/in/A.java
new file mode 100644
index 0000000..186e8f5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail10/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class setE{
+	int y;
+	public int getY() {
+		return y;
+	}
+	public void setY(int y) {
+		this.y = y;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail2/in/A.java
new file mode 100644
index 0000000..0797e05
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail2/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	private int f;
+	private static int g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail3/in/A.java
new file mode 100644
index 0000000..e1abbc3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail3/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	private int f;
+	public static int g;	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail4/in/A.java
new file mode 100644
index 0000000..86f7550
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail4/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	private int f;
+	public Object g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail5/in/A.java
new file mode 100644
index 0000000..96e2633
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail5/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class B {
+	int g;
+	class A {
+		private int f;
+	}
+}	
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail6/in/A.java
new file mode 100644
index 0000000..d688226
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail6/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	private int f;
+	class B {
+		private int g;
+	}
+}	
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail7/in/A.java
new file mode 100644
index 0000000..a09bd64
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail7/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	private int f;
+	void m(){
+		try{
+			f++;
+		} catch (Exception g){
+			f++;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail8/in/A.java
new file mode 100644
index 0000000..dc2e17d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail8/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A{
+	int gg;
+	class C{
+		int f;
+		void m(){
+			gg++;
+		}	
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail9/in/A.java
new file mode 100644
index 0000000..d1005b0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testFail9/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class getE{
+	int y;
+	public int getY() {
+		return y;
+	}
+	public void setY(int y) {
+		this.y = y;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testUnicode01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testUnicode01/in/A.java
new file mode 100644
index 0000000..6f9058f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testUnicode01/in/A.java
@@ -0,0 +1,23 @@
+package p;
+
+class A {
+	A fi\u0065ld;
+	
+	/**
+	 * @see A # field
+	 * @see A # fiel\u0064
+	 * @see #fiel\u0064
+	 */
+	A(A a) {
+		\u0066ield= a.field;
+		s\u0065tField(getField());
+	}
+	
+	A get\u0046ield() {
+		return \u0066i\u0065ld;
+	}
+	
+	public void setField(A field) {
+		this./*TODO: create Getter*/field= \u0066ield;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testUnicode01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testUnicode01/out/A.java
new file mode 100644
index 0000000..07ba6f5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateField/testUnicode01/out/A.java
@@ -0,0 +1,23 @@
+package p;
+
+class A {
+	A feel;
+	
+	/**
+	 * @see A # feel
+	 * @see A # feel
+	 * @see #feel
+	 */
+	A(A a) {
+		feel= a.feel;
+		setFeel(getFeel());
+	}
+	
+	A getFeel() {
+		return feel;
+	}
+	
+	public void setFeel(A field) {
+		this./*TODO: create Getter*/feel= \u0066ield;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test0/in/A.java
new file mode 100644
index 0000000..bbcc717
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test0/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//renaming A.m to k
+class A {
+	private void m(){}
+	class B{
+		void f(){
+			m();
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test0/out/A.java
new file mode 100644
index 0000000..c4e4056
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test0/out/A.java
@@ -0,0 +1,10 @@
+package p;
+//renaming A.m to k
+class A {
+	private void k(){}
+	class B{
+		void f(){
+			k();
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test10/in/A.java
new file mode 100644
index 0000000..855db73
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test10/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	private void m(){}
+}
+class B {
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test10/out/A.java
new file mode 100644
index 0000000..8040304
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test10/out/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	private void k(){}
+}
+class B {
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test11/in/A.java
new file mode 100644
index 0000000..41938b9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test11/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	private void m(){}
+}
+class B extends A{
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test11/out/A.java
new file mode 100644
index 0000000..4fb51dd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test11/out/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	private void k(){}
+}
+class B extends A{
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test12/in/A.java
new file mode 100644
index 0000000..1bfd88f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test12/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	private void m(){}
+}
+class B extends A{
+	public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test12/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test12/out/A.java
new file mode 100644
index 0000000..ae12fdb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test12/out/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	private void k(){}
+}
+class B extends A{
+	public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test13/in/A.java
new file mode 100644
index 0000000..2b3e68b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test13/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class B{
+	private void m(){
+	}
+	void f(){
+		m();
+	}
+}
+class A extends B{
+	private void m(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test13/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test13/out/A.java
new file mode 100644
index 0000000..900894d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test13/out/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class B{
+	private void m(){
+	}
+	void f(){
+		m();
+	}
+}
+class A extends B{
+	private void k(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test14/in/A.java
new file mode 100644
index 0000000..d189f8a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test14/in/A.java
@@ -0,0 +1,16 @@
+package p;
+//renaming A.m to k
+class B{
+	private void k(){
+	}
+	void f(){
+		k();
+	}
+}
+class A extends B{
+	private void m(){
+	}
+	void f(){
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test14/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test14/out/A.java
new file mode 100644
index 0000000..2919161
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test14/out/A.java
@@ -0,0 +1,16 @@
+package p;
+//renaming A.m to k
+class B{
+	private void k(){
+	}
+	void f(){
+		k();
+	}
+}
+class A extends B{
+	private void k(){
+	}
+	void f(){
+		k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test15/in/A.java
new file mode 100644
index 0000000..489be30
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test15/in/A.java
@@ -0,0 +1,7 @@
+package p;
+//renaming A.m to k
+class A{
+	private int m(int m){
+		return m(m(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test15/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test15/out/A.java
new file mode 100644
index 0000000..1eb3f1e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test15/out/A.java
@@ -0,0 +1,7 @@
+package p;
+//renaming A.m to k
+class A{
+	private int k(int m){
+		return k(k(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test16/in/A.java
new file mode 100644
index 0000000..130501a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test16/in/A.java
@@ -0,0 +1,7 @@
+package p;
+//renaming A.m to fred
+class A{
+	private int m(int m){
+		return m(m(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test16/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test16/out/A.java
new file mode 100644
index 0000000..03bab78
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test16/out/A.java
@@ -0,0 +1,7 @@
+package p;
+//renaming A.m to fred
+class A{
+	private int fred(int m){
+		return fred(fred(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test17/in/A.java
new file mode 100644
index 0000000..7ddf22d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test17/in/A.java
@@ -0,0 +1,8 @@
+//renaming A.m to kk
+package p;
+public class A {
+	private void m(int m){}
+}
+class B extends A{
+	void m(boolean m){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test17/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test17/out/A.java
new file mode 100644
index 0000000..6d4f71c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test17/out/A.java
@@ -0,0 +1,8 @@
+//renaming A.m to kk
+package p;
+public class A {
+	private void kk(int m){}
+}
+class B extends A{
+	void m(boolean m){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/in/A.java
new file mode 100644
index 0000000..588b82d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/in/A.java
@@ -0,0 +1,11 @@
+//renaming B.m to kk
+package p;
+class B {
+	private void m(int m) {
+	}
+
+}
+public class A extends B {
+	void m(int m) {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/in/C.java
new file mode 100644
index 0000000..4794cc8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/in/C.java
@@ -0,0 +1,6 @@
+package p;
+class C{
+	void k(){
+		new A().m(4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/out/A.java
new file mode 100644
index 0000000..af4db05
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/out/A.java
@@ -0,0 +1,11 @@
+//renaming B.m to kk
+package p;
+class B {
+	private void kk(int m) {
+	}
+
+}
+public class A extends B {
+	void m(int m) {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/out/C.java
new file mode 100644
index 0000000..4794cc8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test18/out/C.java
@@ -0,0 +1,6 @@
+package p;
+class C{
+	void k(){
+		new A().m(4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test2/in/A.java
new file mode 100644
index 0000000..36ded4c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test2/in/A.java
@@ -0,0 +1,14 @@
+//renaming A.m to fred
+package p;
+public class A{
+	private void m() {
+	}
+	void k(){
+		A a= new A();
+		a
+		.
+		m ();
+	}
+	
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test2/out/A.java
new file mode 100644
index 0000000..a8cd235
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test2/out/A.java
@@ -0,0 +1,14 @@
+//renaming A.m to fred
+package p;
+public class A{
+	private void fred() {
+	}
+	void k(){
+		A a= new A();
+		a
+		.
+		fred ();
+	}
+	
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test20/in/A.java
new file mode 100644
index 0000000..357e768
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test20/in/A.java
@@ -0,0 +1,23 @@
+//renaming A.m to fred
+package p;
+public class A{
+	private int m(int m) {
+		return m	(	m	)	;
+	}
+		void k(){
+		A a= new A();
+		a
+	.
+		m 
+			(
+			a
+				.
+	m	
+				(
+					6
+			)	
+			
+		);
+	}
+	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test20/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test20/out/A.java
new file mode 100644
index 0000000..47a8800
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test20/out/A.java
@@ -0,0 +1,23 @@
+//renaming A.m to fred
+package p;
+public class A{
+	private int fred(int m) {
+		return fred	(	m	)	;
+	}
+		void k(){
+		A a= new A();
+		a
+	.
+		fred 
+			(
+			a
+				.
+	fred	
+				(
+					6
+			)	
+			
+		);
+	}
+	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test23/in/A.java
new file mode 100644
index 0000000..e19f4ef
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test23/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class A{
+	private void m(){
+	}
+}
+class test{
+	void m(){
+		class X extends A{
+			void m(){
+		}
+	}
+}}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test23/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test23/out/A.java
new file mode 100644
index 0000000..572f93c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test23/out/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class A{
+	private void k(){
+	}
+}
+class test{
+	void m(){
+		class X extends A{
+			void m(){
+		}
+	}
+}}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test24/in/A.java
new file mode 100644
index 0000000..eb9c053
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test24/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//renaming A.m to k
+class A{
+	private void m(String s){
+	}
+}
+class B extends A{
+	void m(java.lang.String s){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test24/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test24/out/A.java
new file mode 100644
index 0000000..cf5dc6f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test24/out/A.java
@@ -0,0 +1,10 @@
+package p;
+//renaming A.m to k
+class A{
+	private void k(String s){
+	}
+}
+class B extends A{
+	void m(java.lang.String s){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test25/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test25/in/A.java
new file mode 100644
index 0000000..433c5a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test25/in/A.java
@@ -0,0 +1,6 @@
+package p;
+//renaming A.m to k
+class A{
+	private void m(String[] s){
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test25/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test25/out/A.java
new file mode 100644
index 0000000..1e65a26
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test25/out/A.java
@@ -0,0 +1,6 @@
+package p;
+//renaming A.m to k
+class A{
+	private void k(String[] s){
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test26/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test26/in/A.java
new file mode 100644
index 0000000..913e471
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test26/in/A.java
@@ -0,0 +1,8 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	private void m(){
+		this.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test26/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test26/out/A.java
new file mode 100644
index 0000000..950b977
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test26/out/A.java
@@ -0,0 +1,8 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	private void k(){
+		this.k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test27/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test27/in/A.java
new file mode 100644
index 0000000..bb7ad49
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test27/in/A.java
@@ -0,0 +1,9 @@
+//no ref update
+//renaming A.m to k 
+package p;
+
+class A{
+	private void m(){
+		this.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test27/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test27/out/A.java
new file mode 100644
index 0000000..f4deb45
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/test27/out/A.java
@@ -0,0 +1,9 @@
+//no ref update
+//renaming A.m to k 
+package p;
+
+class A{
+	private void k(){
+		this.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testAnon0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testAnon0/in/A.java
new file mode 100644
index 0000000..2526bba
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testAnon0/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+public class A {
+	private void m(){}
+}
+class B{
+	void f(){
+		A a= new A(){
+			void m(){
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testAnon0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testAnon0/out/A.java
new file mode 100644
index 0000000..730610f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testAnon0/out/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+public class A {
+	private void k(){}
+}
+class B{
+	void f(){
+		A a= new A(){
+			void m(){
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testDelegate01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testDelegate01/in/A.java
new file mode 100644
index 0000000..97037ab
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testDelegate01/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+public class A {
+	
+	private void m() {
+		
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testDelegate01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testDelegate01/out/A.java
new file mode 100644
index 0000000..b6d109c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testDelegate01/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+public class A {
+	
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	private void m() {
+		k();
+	}
+
+	private void k() {
+		
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail0/in/A.java
new file mode 100644
index 0000000..946d84c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail0/in/A.java
@@ -0,0 +1,5 @@
+package p;
+//can't rename native methods
+class A{
+ 	private native void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail1/in/A.java
new file mode 100644
index 0000000..ef9f460
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail1/in/A.java
@@ -0,0 +1,6 @@
+package p;
+//can't rename m to k
+class A{
+ 	private void m(){}
+ 	private void k(){}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail2/in/A.java
new file mode 100644
index 0000000..72a3339
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail2/in/A.java
@@ -0,0 +1,20 @@
+//can't rename A.m to k
+package p;
+
+class X {
+	void k(){
+	}
+}
+class A {
+	private void m(){
+		System.out.println("a");
+	}
+	class B extends X{
+		void f(){
+			m();
+		}
+		public void foo() {
+			
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail5/in/A.java
new file mode 100644
index 0000000..36269e5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePrivateMethod/testFail5/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+public class A {
+	private void m(){}
+	class B{
+		void k(){
+			m();
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test0/in/A.java
new file mode 100644
index 0000000..408f8be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test0/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	static void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test0/out/A.java
new file mode 100644
index 0000000..a8ca53b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test0/out/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	static void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test1/in/A.java
new file mode 100644
index 0000000..e48131f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test1/in/A.java
@@ -0,0 +1,18 @@
+package p;
+class A{
+	static void m(){
+	}
+	void f(){
+		m();
+	}
+	static int fred(){
+		m();
+		return 0;
+	}
+}
+class B{
+	static void m(){
+		A.m();
+		new A().m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test1/out/A.java
new file mode 100644
index 0000000..e645c03
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test1/out/A.java
@@ -0,0 +1,18 @@
+package p;
+class A{
+	static void k(){
+	}
+	void f(){
+		k();
+	}
+	static int fred(){
+		k();
+		return 0;
+	}
+}
+class B{
+	static void m(){
+		A.k();
+		new A().k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/in/A.java
new file mode 100644
index 0000000..f269555
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/in/A.java
@@ -0,0 +1,8 @@
+package p;
+public class A {
+
+	public static void method() {
+		System.out.println("TestA.method");
+		B.method();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/in/B.java
new file mode 100644
index 0000000..2cf7ae4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/in/B.java
@@ -0,0 +1,7 @@
+package p;
+public class B {
+
+	public static void method() {
+		System.out.println("TestB.method");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/out/A.java
new file mode 100644
index 0000000..8456765
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/out/A.java
@@ -0,0 +1,8 @@
+package p;
+public class A {
+
+	public static void method() {
+		System.out.println("TestA.method");
+		B.newmethod();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/out/B.java
new file mode 100644
index 0000000..ac1e13a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test10/out/B.java
@@ -0,0 +1,7 @@
+package p;
+public class B {
+
+	public static void newmethod() {
+		System.out.println("TestB.method");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/in/A.java
new file mode 100644
index 0000000..297b360
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/in/A.java
@@ -0,0 +1,8 @@
+package a;
+
+public class A
+{
+   public static void method2() //<--- refactor rename this method
+   {
+   }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/in/B.java
new file mode 100644
index 0000000..9d7c071
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/in/B.java
@@ -0,0 +1,19 @@
+package b;
+
+import a.A;
+
+public class B
+{
+   I i = new I()
+   {
+	  public void method()
+	  {
+		 A.method2();
+	  }
+   };
+}
+
+interface I
+{
+   void method();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/out/A.java
new file mode 100644
index 0000000..01510e3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/out/A.java
@@ -0,0 +1,8 @@
+package a;
+
+public class A
+{
+   public static void fred() //<--- refactor rename this method
+   {
+   }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/out/B.java
new file mode 100644
index 0000000..8d40db8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test11/out/B.java
@@ -0,0 +1,19 @@
+package b;
+
+import a.A;
+
+public class B
+{
+   I i = new I()
+   {
+	  public void method()
+	  {
+		 A.fred();
+	  }
+   };
+}
+
+interface I
+{
+   void method();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test2/in/A.java
new file mode 100644
index 0000000..9f1d3b6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test2/in/A.java
@@ -0,0 +1,39 @@
+package p;
+class A{
+	static void m(){
+	}
+	void f(){
+		m();
+	}
+	static int fred(){
+		m();
+		return 1;
+	}
+	{
+		A.m();
+		m();
+		new A().m();
+	}
+	static {
+		A.m();
+		m();
+		new A().m();
+	}
+}
+class D{
+	static void m(){
+		A.m();
+		new A().m();
+		m();
+	}
+	static {
+		A.m();
+		new A().m();
+		m();
+	}
+	{
+		A.m();
+		new A().m();
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test2/out/A.java
new file mode 100644
index 0000000..81351b6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test2/out/A.java
@@ -0,0 +1,39 @@
+package p;
+class A{
+	static void k(){
+	}
+	void f(){
+		k();
+	}
+	static int fred(){
+		k();
+		return 1;
+	}
+	{
+		A.k();
+		k();
+		new A().k();
+	}
+	static {
+		A.k();
+		k();
+		new A().k();
+	}
+}
+class D{
+	static void m(){
+		A.k();
+		new A().k();
+		m();
+	}
+	static {
+		A.k();
+		new A().k();
+		m();
+	}
+	{
+		A.k();
+		new A().k();
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test3/in/A.java
new file mode 100644
index 0000000..ede5a5c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test3/in/A.java
@@ -0,0 +1,15 @@
+package p;
+class A{
+static void m(){}
+}
+class B extends A{
+
+}
+class Test{
+void f(){
+	new A().m();
+	A.m();
+	new B().m();
+	B.m();
+}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test3/out/A.java
new file mode 100644
index 0000000..d010dcb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test3/out/A.java
@@ -0,0 +1,15 @@
+package p;
+class A{
+static void k(){}
+}
+class B extends A{
+
+}
+class Test{
+void f(){
+	new A().k();
+	A.k();
+	new B().k();
+	B.k();
+}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test4/in/A.java
new file mode 100644
index 0000000..9284825
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test4/in/A.java
@@ -0,0 +1,15 @@
+package p;
+class A{
+static void m(){}
+}
+class B extends A{
+static void m(){};
+}
+class Test{
+void f(){
+	new A().m();
+	A.m();
+	new B().m();
+	B.m();
+}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test4/out/A.java
new file mode 100644
index 0000000..c86867f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test4/out/A.java
@@ -0,0 +1,15 @@
+package p;
+class A{
+static void k(){}
+}
+class B extends A{
+static void m(){};
+}
+class Test{
+void f(){
+	new A().k();
+	A.k();
+	new B().m();
+	B.m();
+}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test5/in/A.java
new file mode 100644
index 0000000..676e688
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test5/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//renaming A.m to k
+class A {
+	static void m(){}
+	class B{
+		void f(){
+			m();
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test5/out/A.java
new file mode 100644
index 0000000..d961d76
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test5/out/A.java
@@ -0,0 +1,10 @@
+package p;
+//renaming A.m to k
+class A {
+	static void k(){}
+	class B{
+		void f(){
+			k();
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test6/in/A.java
new file mode 100644
index 0000000..d1cea87
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test6/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class A{
+	static void m(){
+	}
+}
+class test1{
+	void m(){
+		class X extends A{
+			void mm(){
+		}
+	}
+}}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test6/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test6/out/A.java
new file mode 100644
index 0000000..f1bbca3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test6/out/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class A{
+	static void k(){
+	}
+}
+class test1{
+	void m(){
+		class X extends A{
+			void mm(){
+		}
+	}
+}}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test7/in/A.java
new file mode 100644
index 0000000..13de2de
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test7/in/A.java
@@ -0,0 +1,7 @@
+package p;
+//renaming A.m to k
+class A{
+	static int m(int m){
+		return m(m(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test7/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test7/out/A.java
new file mode 100644
index 0000000..f8d3899
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test7/out/A.java
@@ -0,0 +1,7 @@
+package p;
+//renaming A.m to k
+class A{
+	static int k(int m){
+		return k(k(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test8/in/A.java
new file mode 100644
index 0000000..b1f304f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test8/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class A{
+	static int m(int m){
+		return m(m(m));
+	}
+}
+
+class B extends A{
+	static int m(int m){
+		return m(m(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test8/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test8/out/A.java
new file mode 100644
index 0000000..3dd2377
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test8/out/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class A{
+	static int k(int m){
+		return k(k(m));
+	}
+}
+
+class B extends A{
+	static int m(int m){
+		return m(m(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test9/in/A.java
new file mode 100644
index 0000000..3e09fbc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test9/in/A.java
@@ -0,0 +1,14 @@
+//no ref update
+package p;
+//renaming A.m to k
+class A{
+	static int m(int m){
+		return m(m(m));
+	}
+}
+
+class B extends A{
+	static int m(int m){
+		return m(m(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test9/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test9/out/A.java
new file mode 100644
index 0000000..4f11385
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/test9/out/A.java
@@ -0,0 +1,14 @@
+//no ref update
+package p;
+//renaming A.m to k
+class A{
+	static int k(int m){
+		return m(m(m));
+	}
+}
+
+class B extends A{
+	static int m(int m){
+		return m(m(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testDelegate01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testDelegate01/in/A.java
new file mode 100644
index 0000000..33c3f39
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testDelegate01/in/A.java
@@ -0,0 +1,8 @@
+
+public class A {
+	
+	static void m() {
+		
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testDelegate01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testDelegate01/out/A.java
new file mode 100644
index 0000000..85326ef
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testDelegate01/out/A.java
@@ -0,0 +1,15 @@
+
+public class A {
+	
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	static void m() {
+		k();
+	}
+
+	static void k() {
+		
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail0/in/A.java
new file mode 100644
index 0000000..515cf69
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail0/in/A.java
@@ -0,0 +1,5 @@
+package p;
+//can't rename native methods
+class A{
+ 	static private native void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail1/in/A.java
new file mode 100644
index 0000000..64520ec
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail1/in/A.java
@@ -0,0 +1,6 @@
+package p;
+//can't rename m to k
+class A{
+ 	static private void m(){}
+ 	static private void k(){}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail2/in/A.java
new file mode 100644
index 0000000..2560341
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail2/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename m to k
+class B{
+ 	void k(){}	
+}
+class A extends B{
+ 	static public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail4/in/A.java
new file mode 100644
index 0000000..32fda7c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail4/in/A.java
@@ -0,0 +1,6 @@
+package p;
+//can't rename m to k
+class A{
+ 	static public void m(){}
+ 	void k(){}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail5/in/A.java
new file mode 100644
index 0000000..43d650a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail5/in/A.java
@@ -0,0 +1,5 @@
+package p;
+//can't rename native methods
+class A{
+ 	static native void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail6/in/A.java
new file mode 100644
index 0000000..2cedaae
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail6/in/A.java
@@ -0,0 +1,6 @@
+package p;
+//can't rename m to k
+class A{
+ 	static public void m(){}
+ 	static public void k(){}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail7/in/A.java
new file mode 100644
index 0000000..9bacef7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail7/in/A.java
@@ -0,0 +1,6 @@
+package p;
+//can't rename m to k
+class A{
+ 	static public void m(){}
+ 	static private void k(){}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail8/in/A.java
new file mode 100644
index 0000000..d0d9225
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testFail8/in/A.java
@@ -0,0 +1,6 @@
+package p;
+//can't rename m to k
+class A{
+ 	static public void m(){}
+ 	private void k(){}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/in/A.java
new file mode 100644
index 0000000..43074a0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/in/A.java
@@ -0,0 +1,15 @@
+package p;
+
+import static p.A.m;
+
+public class A {
+    public static int m() {
+        return 0;
+    }
+}
+
+class B {
+    void use() {
+        int t= m();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/in/C.java
new file mode 100644
index 0000000..3e8f5d6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/in/C.java
@@ -0,0 +1,9 @@
+package p;
+
+import static p.A.m;
+
+public class C {
+    void use() {
+        int t= m();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/out/A.java
new file mode 100644
index 0000000..eaa2f81
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+import static p.A.k;
+
+public class A {
+    public static int k() {
+        return 0;
+    }
+}
+
+class B {
+    void use() {
+        int t= k();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/out/C.java
new file mode 100644
index 0000000..c03295e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport1/out/C.java
@@ -0,0 +1,9 @@
+package p;
+
+import static p.A.k;
+
+public class C {
+    void use() {
+        int t= k();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/in/A.java
new file mode 100644
index 0000000..e3f76bf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/in/A.java
@@ -0,0 +1,7 @@
+package p;
+
+public class A {
+    public static int m() {
+        return 0;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/in/C.java
new file mode 100644
index 0000000..fc47198
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/in/C.java
@@ -0,0 +1,9 @@
+package p;
+
+import static p.A.*;
+
+public class C {
+    void use() {
+        int t= m();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/out/A.java
new file mode 100644
index 0000000..b2d0c0c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/out/A.java
@@ -0,0 +1,7 @@
+package p;
+
+public class A {
+    public static int k() {
+        return 0;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/out/C.java
new file mode 100644
index 0000000..d0d790e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport2/out/C.java
@@ -0,0 +1,9 @@
+package p;
+
+import static p.A.*;
+
+public class C {
+    void use() {
+        int t= k();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport3/in/A.java
new file mode 100644
index 0000000..02acba5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport3/in/A.java
@@ -0,0 +1,15 @@
+package p;
+// static import imports field and method
+import static p.A.m;
+
+public class A {
+     public static void m() { }
+     public static int m;
+}
+
+class B {
+    void use() {
+        int t= m;
+        m();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport3/out/A.java
new file mode 100644
index 0000000..b48391b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport3/out/A.java
@@ -0,0 +1,16 @@
+package p;
+// static import imports field and method
+import static p.A.k;
+import static p.A.m;
+
+public class A {
+     public static void k() { }
+     public static int m;
+}
+
+class B {
+    void use() {
+        int t= m;
+        k();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport4/in/A.java
new file mode 100644
index 0000000..61a1ddf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport4/in/A.java
@@ -0,0 +1,15 @@
+package p;
+
+import static p.A.*;
+
+public class A {
+     public static void m() { }
+     public static int m;
+}
+
+class B {
+    void use() {
+        int t= m;
+        m();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport4/out/A.java
new file mode 100644
index 0000000..2f12045
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport4/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+import static p.A.*;
+
+public class A {
+     public static void k() { }
+     public static int m;
+}
+
+class B {
+    void use() {
+        int t= m;
+        k();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport5/in/A.java
new file mode 100644
index 0000000..887c231
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport5/in/A.java
@@ -0,0 +1,15 @@
+package p;
+//static import imports two methods
+import static p.A.m;
+
+public class A {
+    public static void m() { }
+    public static void m(int arg) { }
+}
+
+class B {
+    void use() {
+        m();
+        m(1);
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport5/out/A.java
new file mode 100644
index 0000000..94c1764
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImport5/out/A.java
@@ -0,0 +1,16 @@
+package p;
+//static import imports two methods
+import static p.A.k;
+import static p.A.m;
+
+public class A {
+    public static void k() { }
+    public static void m(int arg) { }
+}
+
+class B {
+    void use() {
+        k();
+        m(1);
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImportFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImportFail0/in/A.java
new file mode 100644
index 0000000..cc7f52c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testStaticImportFail0/in/A.java
@@ -0,0 +1,16 @@
+package p;
+// rename A.m() -> k(): reference in B will be shadowed by B#k()
+import static p.A.m;
+
+public class A {
+     public static void m() { }
+     public static int m;
+}
+
+class B {
+    void use() {
+        int t= m;
+        m();
+    }
+    void k() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testUnicode01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testUnicode01/in/A.java
new file mode 100644
index 0000000..da952b4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testUnicode01/in/A.java
@@ -0,0 +1,15 @@
+package p;
+class A{
+	/**
+	 * @see #e()
+	 * @see #\u0065()
+	 * @see A#\u0065()
+	 */
+	static void \u0065() {
+		\u0065();
+		e();
+		new A().\u0065();
+		A. e ();
+		new A(). \u0065/*unicode*/();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testUnicode01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testUnicode01/out/A.java
new file mode 100644
index 0000000..a6ddeea
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameStaticMethod/testUnicode01/out/A.java
@@ -0,0 +1,15 @@
+package p;
+class A{
+	/**
+	 * @see #f()
+	 * @see #f()
+	 * @see A#f()
+	 */
+	static void f() {
+		f();
+		f();
+		new A().f();
+		A. f ();
+		new A(). f/*unicode*/();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_in.java
new file mode 100644
index 0000000..0519ecb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_in.java
@@ -0,0 +1 @@
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_out.java
new file mode 100644
index 0000000..0519ecb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_out.java
@@ -0,0 +1 @@
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test0_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test0_in.java
new file mode 100644
index 0000000..6a1d49b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test0_in.java
@@ -0,0 +1,11 @@
+//rename to: j
+package p;
+class A{
+	/**
+	 * @param i this is I
+	 * @param x invalid
+	 */
+	void m(int i){
+		int /*[*/x/*]*/;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test0_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test0_out.java
new file mode 100644
index 0000000..9d99c47
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test0_out.java
@@ -0,0 +1,11 @@
+//rename to: j
+package p;
+class A{
+	/**
+	 * @param i this is I
+	 * @param x invalid
+	 */
+	void m(int i){
+		int /*[*/j/*]*/;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test11_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test11_in.java
new file mode 100644
index 0000000..b8dc073
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test11_in.java
@@ -0,0 +1,13 @@
+//rename to j
+package p;
+class A{
+	int k;
+	void m(){
+		int /*[*/i/*]*/= 0;
+		A a= new A(){
+			void m(int i){
+				i++;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test11_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test11_out.java
new file mode 100644
index 0000000..fea23ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test11_out.java
@@ -0,0 +1,13 @@
+//rename to j
+package p;
+class A{
+	int k;
+	void m(){
+		int /*[*/j/*]*/= 0;
+		A a= new A(){
+			void m(int i){
+				i++;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test12_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test12_in.java
new file mode 100644
index 0000000..c610e3d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test12_in.java
@@ -0,0 +1,12 @@
+//rename to j
+package p;
+class A{
+	void m(){
+		final int /*[*/i/*]*/= 0;
+		A a= new A(){
+			void m(int k){
+				k= i;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test12_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test12_out.java
new file mode 100644
index 0000000..c5f92c8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test12_out.java
@@ -0,0 +1,12 @@
+//rename to j
+package p;
+class A{
+	void m(){
+		final int /*[*/j/*]*/= 0;
+		A a= new A(){
+			void m(int k){
+				k= j;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test13_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test13_in.java
new file mode 100644
index 0000000..dd77f0d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test13_in.java
@@ -0,0 +1,10 @@
+//rename to: j
+package p;
+class A{
+	void m(){
+		int /*[*/i/*]*/= 0;
+	}
+	void n(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test13_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test13_out.java
new file mode 100644
index 0000000..30adc71
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test13_out.java
@@ -0,0 +1,10 @@
+//rename to: j
+package p;
+class A{
+	void m(){
+		int /*[*/j/*]*/= 0;
+	}
+	void n(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test14_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test14_in.java
new file mode 100644
index 0000000..f5b387e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test14_in.java
@@ -0,0 +1,9 @@
+//rename to: j
+package p;
+class A{
+	A i;
+	A m(A k){
+		A /*[*/i/*]*/= k;
+		return i.m(i.m(this.i));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test14_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test14_out.java
new file mode 100644
index 0000000..7e58ef1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test14_out.java
@@ -0,0 +1,9 @@
+//rename to: j
+package p;
+class A{
+	A i;
+	A m(A k){
+		A /*[*/j/*]*/= k;
+		return j.m(j.m(this.i));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test15_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test15_in.java
new file mode 100644
index 0000000..0f40090
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test15_in.java
@@ -0,0 +1,9 @@
+//rename to: j, i
+package p;
+class A{
+	int m(){
+		int i= 0;
+		int j= 0;
+		return i + j;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test15_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test15_out.java
new file mode 100644
index 0000000..8e32cee
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test15_out.java
@@ -0,0 +1,9 @@
+//rename to: j, i
+package p;
+class A{
+	int m(){
+		int j= 0;
+		int i= 0;
+		return j + i;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test16_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test16_in.java
new file mode 100644
index 0000000..1b59d22
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test16_in.java
@@ -0,0 +1,10 @@
+//renaming to: j
+package p;
+class A{
+	void m(){
+		int /*[*/i/*]*/= 0;
+		class X{
+			int j;
+		}
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test16_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test16_out.java
new file mode 100644
index 0000000..fdd8842
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test16_out.java
@@ -0,0 +1,10 @@
+//renaming to: j
+package p;
+class A{
+	void m(){
+		int /*[*/j/*]*/= 0;
+		class X{
+			int j;
+		}
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test17_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test17_in.java
new file mode 100644
index 0000000..fd51317
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test17_in.java
@@ -0,0 +1,10 @@
+//renaming to: j, i, k
+package p;
+class A{
+	int l;
+	int m(){
+		int i= 0; int j= 0; int k= 0;
+		int m= 0;
+		return i + j + k + l + m;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test17_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test17_out.java
new file mode 100644
index 0000000..5f45c44
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test17_out.java
@@ -0,0 +1,10 @@
+//renaming to: j, i, k
+package p;
+class A{
+	int l;
+	int m(){
+		int j= 0; int i= 0; int k= 0;
+		int m= 0;
+		return j + i + k + l + m;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test18_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test18_in.java
new file mode 100644
index 0000000..f293896
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test18_in.java
@@ -0,0 +1,9 @@
+//renaming to: j
+package p;
+class A{
+	void m(){
+		Object /*[*/i/*]*/= null;
+		class j{}
+		i= new j();
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test18_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test18_out.java
new file mode 100644
index 0000000..0f081da
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test18_out.java
@@ -0,0 +1,9 @@
+//renaming to: j
+package p;
+class A{
+	void m(){
+		Object /*[*/j/*]*/= null;
+		class j{}
+		j= new j();
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test19_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test19_in.java
new file mode 100644
index 0000000..bbfa4d1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test19_in.java
@@ -0,0 +1,11 @@
+//renaming to: j
+package p;
+class A{
+	A i;
+	void m(){
+		A /*[*/i/*]*/= null;
+		i.toString();
+		i.equals(i.toString());
+		i.i.i= i;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test19_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test19_out.java
new file mode 100644
index 0000000..5b0e159
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test19_out.java
@@ -0,0 +1,11 @@
+//renaming to: j
+package p;
+class A{
+	A i;
+	void m(){
+		A /*[*/j/*]*/= null;
+		j.toString();
+		j.equals(j.toString());
+		j.i.i= j;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test1_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test1_in.java
new file mode 100644
index 0000000..41e331a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test1_in.java
@@ -0,0 +1,8 @@
+//rename to: j
+package p;
+class A{
+	void m(int i){
+		int /*[*/x/*]*/= 0;
+		x++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test1_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test1_out.java
new file mode 100644
index 0000000..adb36d0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test1_out.java
@@ -0,0 +1,8 @@
+//rename to: j
+package p;
+class A{
+	void m(int i){
+		int /*[*/j/*]*/= 0;
+		j++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test20_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test20_in.java
new file mode 100644
index 0000000..715e44a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test20_in.java
@@ -0,0 +1,17 @@
+//renaming to: j
+package p;
+class A{
+	Object m(){
+		i /*[*/i/*]*/= new i();
+		i.i.i= i.i;
+		i:{
+			while(true){
+				break i;
+				return i;
+			}
+		}
+	};
+}
+class i{
+	i i;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test20_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test20_out.java
new file mode 100644
index 0000000..cb7ef4c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test20_out.java
@@ -0,0 +1,17 @@
+//renaming to: j
+package p;
+class A{
+	Object m(){
+		i /*[*/j/*]*/= new i();
+		j.i.i= j.i;
+		i:{
+			while(true){
+				break i;
+				return j;
+			}
+		}
+	};
+}
+class i{
+	i i;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test21_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test21_in.java
new file mode 100644
index 0000000..1049a58
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test21_in.java
@@ -0,0 +1,12 @@
+//renaming to: j
+package p;
+class A{
+	void m(){
+		int /*[*/i/*]*/= 0;
+		int[] o= new int[8];
+		for (; i == i;){
+			i++;
+			o[++i]= i ==7 ? i: i + i;
+		}
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test21_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test21_out.java
new file mode 100644
index 0000000..8cf0d9c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test21_out.java
@@ -0,0 +1,12 @@
+//renaming to: j
+package p;
+class A{
+	void m(){
+		int /*[*/j/*]*/= 0;
+		int[] o= new int[8];
+		for (; j == j;){
+			j++;
+			o[++j]= j ==7 ? j: j + j;
+		}
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test22_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test22_in.java
new file mode 100644
index 0000000..1ab4635
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test22_in.java
@@ -0,0 +1,9 @@
+//renaming to: j
+package p;
+class A{
+	int i;
+	void m(){
+		int /*[*/i/*]*/=0;
+		int u= i + this.i;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test22_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test22_out.java
new file mode 100644
index 0000000..db4d0a4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test22_out.java
@@ -0,0 +1,9 @@
+//renaming to: j
+package p;
+class A{
+	int i;
+	void m(){
+		int /*[*/j/*]*/=0;
+		int u= j + this.i;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test23_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test23_in.java
new file mode 100644
index 0000000..52db869
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test23_in.java
@@ -0,0 +1,10 @@
+//renaming to: j, i
+package p;
+class A{
+	int j;
+	int m(){
+		final int i= 0;
+		int j=0;
+		return i + j;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test23_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test23_out.java
new file mode 100644
index 0000000..fcd2d7c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test23_out.java
@@ -0,0 +1,10 @@
+//renaming to: j, i
+package p;
+class A{
+	int j;
+	int m(){
+		final int j= 0;
+		int i=0;
+		return j + i;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test24_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test24_in.java
new file mode 100644
index 0000000..e15d964
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test24_in.java
@@ -0,0 +1,9 @@
+//renaming to: j
+package p;
+class A{
+	int i;
+	void m(){
+		int /*[*/i/*]*/= 0;
+		this.i= i;
+	};
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test24_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test24_out.java
new file mode 100644
index 0000000..b018944
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test24_out.java
@@ -0,0 +1,9 @@
+//renaming to: j
+package p;
+class A{
+	int i;
+	void m(){
+		int /*[*/j/*]*/= 0;
+		this.i= j;
+	};
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test25_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test25_in.java
new file mode 100644
index 0000000..6828dbf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test25_in.java
@@ -0,0 +1,9 @@
+//renaming to: j
+package p;
+class A{
+	int j;
+	int m(int k){
+		int /*[*/i/*]*/= 0;
+		return i + m(m(i));
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test25_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test25_out.java
new file mode 100644
index 0000000..4003cbc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test25_out.java
@@ -0,0 +1,9 @@
+//renaming to: j
+package p;
+class A{
+	int j;
+	int m(int k){
+		int /*[*/j/*]*/= 0;
+		return j + m(m(j));
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test26_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test26_in.java
new file mode 100644
index 0000000..1a0d3eb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test26_in.java
@@ -0,0 +1,14 @@
+//renaming to: j
+package p;
+class A{
+	int j;
+	int m(int k){
+		int /*[*/i/*]*/= 0;
+		new A(){
+			int m(int i){
+				return i;
+			}
+		};
+		return i + m(m(i));
+	};
+}   
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test26_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test26_out.java
new file mode 100644
index 0000000..751e17f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test26_out.java
@@ -0,0 +1,14 @@
+//renaming to: j
+package p;
+class A{
+	int j;
+	int m(int k){
+		int /*[*/j/*]*/= 0;
+		new A(){
+			int m(int i){
+				return i;
+			}
+		};
+		return j + m(m(j));
+	};
+}   
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test27_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test27_in.java
new file mode 100644
index 0000000..54d883c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test27_in.java
@@ -0,0 +1,14 @@
+//renaming to: j
+package p;
+class A{
+	int j;
+	int m(final int k){
+		final int /*[*/i/*]*/= 0;
+		new A(){
+			int m(int o){
+				return i;
+			}
+		};
+		return i + m(m(i));
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test27_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test27_out.java
new file mode 100644
index 0000000..12f54cf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test27_out.java
@@ -0,0 +1,14 @@
+//renaming to: j
+package p;
+class A{
+	int j;
+	int m(final int k){
+		final int /*[*/j/*]*/= 0;
+		new A(){
+			int m(int o){
+				return j;
+			}
+		};
+		return j + m(m(j));
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test28_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test28_in.java
new file mode 100644
index 0000000..e5d1221
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test28_in.java
@@ -0,0 +1,8 @@
+//renaming to: j
+package p;
+class A{
+	int m(){
+		int[] /*[*/i/*]*/= null;
+		i[0]= 0;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test28_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test28_out.java
new file mode 100644
index 0000000..3d2f2bd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test28_out.java
@@ -0,0 +1,8 @@
+//renaming to: j
+package p;
+class A{
+	int m(){
+		int[] /*[*/j/*]*/= null;
+		j[0]= 0;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test29_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test29_in.java
new file mode 100644
index 0000000..48f4754
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test29_in.java
@@ -0,0 +1,14 @@
+//renaming to b
+package p;
+class A{
+   A A;
+   A m(A y){
+	A /*[*/A/*]*/= new A();
+     A:
+        for (;;){
+          if (A.m(A)==A)
+             break A;
+        }
+      return A;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test29_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test29_out.java
new file mode 100644
index 0000000..9c9a681
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test29_out.java
@@ -0,0 +1,14 @@
+//renaming to b
+package p;
+class A{
+   A A;
+   A m(A y){
+	A /*[*/b/*]*/= new A();
+     A:
+        for (;;){
+          if (b.m(b)==b)
+             break A;
+        }
+      return b;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test2_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test2_in.java
new file mode 100644
index 0000000..9c0a760
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test2_in.java
@@ -0,0 +1,8 @@
+//rename to: j, k
+package p;
+class A{
+	void m(){
+		int x;
+		int y;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test2_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test2_out.java
new file mode 100644
index 0000000..2c78ee7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test2_out.java
@@ -0,0 +1,8 @@
+//rename to: j, k
+package p;
+class A{
+	void m(){
+		int j;
+		int k;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test30_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test30_in.java
new file mode 100644
index 0000000..3a50ad6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test30_in.java
@@ -0,0 +1,14 @@
+//renaming to i, k
+package p;
+class A{
+	private void m(){
+		final int i= 0;
+		int /*[*/j/*]*/= 0;
+		class J{
+			int k;
+			void k(){
+				k= k;
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test30_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test30_out.java
new file mode 100644
index 0000000..f8baddd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test30_out.java
@@ -0,0 +1,14 @@
+//renaming to i, k
+package p;
+class A{
+	private void m(){
+		final int i= 0;
+		int /*[*/k/*]*/= 0;
+		class J{
+			int k;
+			void k(){
+				k= k;
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test31_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test31_in.java
new file mode 100644
index 0000000..222e96b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test31_in.java
@@ -0,0 +1,14 @@
+//renaming to kk, j
+package p;
+class A{
+	private void m(){
+		final int /*[*/i/*]*/= 0;
+		int j= 0;
+		new Object(){
+			int kk;
+			void fred(){
+				kk= 0;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test31_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test31_out.java
new file mode 100644
index 0000000..508e943
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test31_out.java
@@ -0,0 +1,14 @@
+//renaming to kk, j
+package p;
+class A{
+	private void m(){
+		final int /*[*/kk/*]*/= 0;
+		int j= 0;
+		new Object(){
+			int kk;
+			void fred(){
+				kk= 0;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test32_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test32_in.java
new file mode 100644
index 0000000..9e61525
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test32_in.java
@@ -0,0 +1,5 @@
+//rename to j
+package p;
+class A{
+	A(){int /*[*/i/*]*/= 0;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test32_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test32_out.java
new file mode 100644
index 0000000..9fb874c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test32_out.java
@@ -0,0 +1,5 @@
+//rename to j
+package p;
+class A{
+	A(){int /*[*/j/*]*/= 0;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test33_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test33_in.java
new file mode 100644
index 0000000..e183b33
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test33_in.java
@@ -0,0 +1,14 @@
+//renaming to b, no ref update
+package p;
+class A{
+   A A;
+   A m(A a){
+   	A /*[*/A/*]*/= null;
+     A:
+        for (;;){
+          if (A.m(A)==A)
+             break A;
+        }
+      return A;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test33_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test33_out.java
new file mode 100644
index 0000000..8dfa807
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test33_out.java
@@ -0,0 +1,14 @@
+//renaming to b, no ref update
+package p;
+class A{
+   A A;
+   A m(A a){
+   	A /*[*/b/*]*/= null;
+     A:
+        for (;;){
+          if (A.m(A)==A)
+             break A;
+        }
+      return A;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test34_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test34_in.java
new file mode 100644
index 0000000..e9da47d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test34_in.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	int j;
+   void m(){
+   	j= 0;
+   	int /*[*/i/*]*/= 0;
+   	i++;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test34_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test34_out.java
new file mode 100644
index 0000000..7a15bdd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test34_out.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	int j;
+   void m(){
+   	j= 0;
+   	int /*[*/j/*]*/= 0;
+   	j++;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test35_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test35_in.java
new file mode 100644
index 0000000..6700ae8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test35_in.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	public void testRLV() {
+	        boolean /*[*/test/*]*/ = true;
+	        boolean t= (test);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test35_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test35_out.java
new file mode 100644
index 0000000..367a47a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test35_out.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	public void testRLV() {
+	        boolean /*[*/test2/*]*/ = true;
+	        boolean t= (test2);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test36_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test36_in.java
new file mode 100644
index 0000000..61a3030
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test36_in.java
@@ -0,0 +1,7 @@
+//rename to: j
+package p;
+class A{
+	void f(){
+		int y, i;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test36_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test36_out.java
new file mode 100644
index 0000000..02465d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test36_out.java
@@ -0,0 +1,7 @@
+//rename to: j
+package p;
+class A{
+	void f(){
+		int j, i;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test37_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test37_in.java
new file mode 100644
index 0000000..61a3030
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test37_in.java
@@ -0,0 +1,7 @@
+//rename to: j
+package p;
+class A{
+	void f(){
+		int y, i;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test37_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test37_out.java
new file mode 100644
index 0000000..de555ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test37_out.java
@@ -0,0 +1,7 @@
+//rename to: j
+package p;
+class A{
+	void f(){
+		int y, j;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test38_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test38_in.java
new file mode 100644
index 0000000..594d3eb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test38_in.java
@@ -0,0 +1,10 @@
+//rename to: i
+package p;
+class A{
+void m(){
+   for(int i= 0; i < 1; i++){
+   }
+   for(int j= 0; j < 1; j++){
+   }
+}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test38_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test38_out.java
new file mode 100644
index 0000000..12f77ab
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test38_out.java
@@ -0,0 +1,10 @@
+//rename to: i
+package p;
+class A{
+void m(){
+   for(int i= 0; i < 1; i++){
+   }
+   for(int i= 0; i < 1; i++){
+   }
+}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test39_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test39_in.java
new file mode 100644
index 0000000..3f76b65
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test39_in.java
@@ -0,0 +1,12 @@
+package p;
+
+class Test {
+	private static final String G= I.GR;
+	
+	public static void c(){
+		Object cp= null;
+	}
+}
+interface I {
+	String GR= "l";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test39_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test39_out.java
new file mode 100644
index 0000000..684a8c4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test39_out.java
@@ -0,0 +1,12 @@
+package p;
+
+class Test {
+	private static final String G= I.GR;
+	
+	public static void c(){
+		Object j= null;
+	}
+}
+interface I {
+	String GR= "l";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test3_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test3_in.java
new file mode 100644
index 0000000..69e7e7c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test3_in.java
@@ -0,0 +1,12 @@
+//rename to: j1
+package p;
+class A{
+	int m(){
+		{
+				int i= 0;
+		 int /*[*/k/*]*/= 0;
+			
+			return i + k;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test3_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test3_out.java
new file mode 100644
index 0000000..1a369d8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test3_out.java
@@ -0,0 +1,12 @@
+//rename to: j1
+package p;
+class A{
+	int m(){
+		{
+				int i= 0;
+		 int /*[*/j1/*]*/= 0;
+			
+			return i + j1;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test40_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test40_in.java
new file mode 100644
index 0000000..0fb399a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test40_in.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	/** @param i it's I. */
+	void m(int i, int i2){
+		int temp= i + i2;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test40_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test40_out.java
new file mode 100644
index 0000000..a31bfc8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test40_out.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	/** @param j it's I. */
+	void m(int j, int i2){
+		int temp= j + i2;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test41_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test41_in.java
new file mode 100644
index 0000000..1e4c907
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test41_in.java
@@ -0,0 +1,4 @@
+package p;
+interface A{
+	 void m(int i, int k);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test41_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test41_out.java
new file mode 100644
index 0000000..ef61197
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test41_out.java
@@ -0,0 +1,4 @@
+package p;
+interface A{
+	 void m(int j, int k);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test42_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test42_in.java
new file mode 100644
index 0000000..cb503c5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test42_in.java
@@ -0,0 +1,4 @@
+package p;
+abstract class A{
+	abstract void m(int i);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test42_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test42_out.java
new file mode 100644
index 0000000..cae5db3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test42_out.java
@@ -0,0 +1,4 @@
+package p;
+abstract class A{
+	abstract void m(int j);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test43_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test43_in.java
new file mode 100644
index 0000000..35d3439
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test43_in.java
@@ -0,0 +1,5 @@
+//rename to j
+package p;
+class A{
+	native void m(int i);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test43_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test43_out.java
new file mode 100644
index 0000000..58f2f20
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test43_out.java
@@ -0,0 +1,5 @@
+//rename to j
+package p;
+class A{
+	native void m(int j);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test44_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test44_in.java
new file mode 100644
index 0000000..d9a29f0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test44_in.java
@@ -0,0 +1,9 @@
+//rename var to: j
+package p;
+abstract class Test {
+  public static final Test FOO = new Test() {
+    public void foo() {
+      int var = 1;
+    }
+  };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test44_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test44_out.java
new file mode 100644
index 0000000..cf0ec5a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test44_out.java
@@ -0,0 +1,9 @@
+//rename var to: j
+package p;
+abstract class Test {
+  public static final Test FOO = new Test() {
+    public void foo() {
+      int j = 1;
+    }
+  };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test45_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test45_in.java
new file mode 100644
index 0000000..ae5e101
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test45_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void m(){
+		int xx;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test45_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test45_out.java
new file mode 100644
index 0000000..84a8dd0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test45_out.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void m(){
+		int j;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test46_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test46_in.java
new file mode 100644
index 0000000..652e982
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test46_in.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	void m(){
+		int xx= 1;
+		int yy= xx;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test46_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test46_out.java
new file mode 100644
index 0000000..5258afa
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test46_out.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	void m(){
+		int j= 1;
+		int yy= j;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test47_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test47_in.java
new file mode 100644
index 0000000..46d7a51
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test47_in.java
@@ -0,0 +1,13 @@
+package p;
+class A {
+	Bar.B[] field= new Bar.B[]{
+		new Bar.B()
+	};
+	void f(){
+		int temp;
+	}
+}
+
+class Bar{
+	static class B{}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test47_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test47_out.java
new file mode 100644
index 0000000..0293a22
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test47_out.java
@@ -0,0 +1,13 @@
+package p;
+class A {
+	Bar.B[] field= new Bar.B[]{
+		new Bar.B()
+	};
+	void f(){
+		int newname;
+	}
+}
+
+class Bar{
+	static class B{}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test48_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test48_in.java
new file mode 100644
index 0000000..39272a6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test48_in.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	void f(){
+		String xxxx= "xx";
+		String y= ( xxxx );
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test48_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test48_out.java
new file mode 100644
index 0000000..2815166
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test48_out.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	void f(){
+		String newname= "xx";
+		String y= ( newname );
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test49_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test49_in.java
new file mode 100644
index 0000000..16cd146
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test49_in.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	{
+		String xxxx= "xx";
+		String y= ( xxxx );
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test49_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test49_out.java
new file mode 100644
index 0000000..de0ec4a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test49_out.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	{
+		String newname= "xx";
+		String y= ( newname );
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test4_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test4_in.java
new file mode 100644
index 0000000..5be6d50
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test4_in.java
@@ -0,0 +1,9 @@
+//rename to: k
+package p;
+class A{
+	int k;
+	void m(){
+		A /*[*/i/*]*/= new A();
+		i.k= i.k;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test4_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test4_out.java
new file mode 100644
index 0000000..4892546
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test4_out.java
@@ -0,0 +1,9 @@
+//rename to: k
+package p;
+class A{
+	int k;
+	void m(){
+		A /*[*/k/*]*/= new A();
+		k.k= k.k;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test50_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test50_in.java
new file mode 100644
index 0000000..0962b7e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test50_in.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	static {
+		String xxxx= "xx";
+		String y= ( xxxx );
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test50_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test50_out.java
new file mode 100644
index 0000000..73341fc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test50_out.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	static {
+		String newname= "xx";
+		String y= ( newname );
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test51_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test51_in.java
new file mode 100644
index 0000000..7a99079
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test51_in.java
@@ -0,0 +1,9 @@
+package p;
+class A {
+	void m() {
+		final int a = 3;
+		final int b = 3;      
+		final int b = 3;
+		final int b = 3;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test51_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test51_out.java
new file mode 100644
index 0000000..f8e3ca6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test51_out.java
@@ -0,0 +1,9 @@
+package p;
+class A {
+	void m() {
+		final int a = 3;
+		final int qwerty = 3;      
+		final int b = 3;
+		final int b = 3;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test52_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test52_in.java
new file mode 100644
index 0000000..50fdd58
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test52_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	{
+		Object /*[*/a/*]*/= null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test52_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test52_out.java
new file mode 100644
index 0000000..9b34038
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test52_out.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	{
+		Object /*[*/j/*]*/= null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test53_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test53_in.java
new file mode 100644
index 0000000..ea69d4d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test53_in.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	int f;
+	protected void primExecute(int t) {
+		this.toString();
+	}
+
+	if (image != null) {
+		Object /*[*/loc/*]*/ = null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test53_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test53_out.java
new file mode 100644
index 0000000..421cd32
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test53_out.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	int f;
+	protected void primExecute(int t) {
+		this.toString();
+	}
+
+	if (image != null) {
+		Object /*[*/locker/*]*/ = null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test54_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test54_in.java
new file mode 100644
index 0000000..8bbafd1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test54_in.java
@@ -0,0 +1,7 @@
+package p;
+class A<S extends Number & Cloneable> {
+    {
+        Object /*[*/o/*]*/= null;
+        o= o.toString();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test54_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test54_out.java
new file mode 100644
index 0000000..b7bee05
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test54_out.java
@@ -0,0 +1,7 @@
+package p;
+class A<S extends Number & Cloneable> {
+    {
+        Object /*[*/obj/*]*/= null;
+        obj= obj.toString();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test55_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test55_in.java
new file mode 100644
index 0000000..4cf43fd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test55_in.java
@@ -0,0 +1,8 @@
+package p;
+class A<S extends Number & Cloneable> {
+    S s;
+    {
+        S /*[*/s/*]*/;
+        s= A.this.s;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test55_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test55_out.java
new file mode 100644
index 0000000..ccab466
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test55_out.java
@@ -0,0 +1,8 @@
+package p;
+class A<S extends Number & Cloneable> {
+    S s;
+    {
+        S /*[*/t/*]*/;
+        t= A.this.s;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test56_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test56_in.java
new file mode 100644
index 0000000..3fa59da
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test56_in.java
@@ -0,0 +1,6 @@
+package p;
+class A<S extends Number & Cloneable> {
+    void m(S /*[*/arg/*]*/) {
+        arg.byteValue();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test56_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test56_out.java
new file mode 100644
index 0000000..897d637
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test56_out.java
@@ -0,0 +1,6 @@
+package p;
+class A<S extends Number & Cloneable> {
+    void m(S /*[*/param/*]*/) {
+        param.byteValue();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test57_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test57_in.java
new file mode 100644
index 0000000..eaab60f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test57_in.java
@@ -0,0 +1,6 @@
+package p;
+class A<S extends Number & Cloneable> {
+    <S> void m(S /*[*/arg/*]*/) {
+        arg.byteValue();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test57_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test57_out.java
new file mode 100644
index 0000000..0d611a8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test57_out.java
@@ -0,0 +1,6 @@
+package p;
+class A<S extends Number & Cloneable> {
+    <S> void m(S /*[*/param/*]*/) {
+        param.byteValue();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test58_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test58_in.java
new file mode 100644
index 0000000..68e1c13
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test58_in.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.List;
+
+class A {
+    int count(List<String> /*[*/arg/*]*/) {
+        return arg.size();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test58_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test58_out.java
new file mode 100644
index 0000000..b8b06df
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test58_out.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.List;
+
+class A {
+    int count(List<String> /*[*/param/*]*/) {
+        return param.size();
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test59_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test59_in.java
new file mode 100644
index 0000000..64b83d0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test59_in.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.util.List;
+
+class A {
+    void m(List<String> arg) {
+        for (String /*[*/each/*]*/ : arg) {
+            String itch= each;
+        }
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test59_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test59_out.java
new file mode 100644
index 0000000..83c18bb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test59_out.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.util.List;
+
+class A {
+    void m(List<String> arg) {
+        for (String /*[*/thing/*]*/ : arg) {
+            String itch= thing;
+        }
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test5_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test5_in.java
new file mode 100644
index 0000000..bfc2974
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test5_in.java
@@ -0,0 +1,9 @@
+//rename to: k
+package p;
+class A{
+	int i;
+	void m(){
+		int /*[*/i/*]*/= 0;
+		this.i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test5_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test5_out.java
new file mode 100644
index 0000000..f08e869
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test5_out.java
@@ -0,0 +1,9 @@
+//rename to: k
+package p;
+class A{
+	int i;
+	void m(){
+		int /*[*/k/*]*/= 0;
+		this.i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test60_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test60_in.java
new file mode 100644
index 0000000..8dc378a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test60_in.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+    /**
+     * @param arg
+     */
+    void m(String... /*[*/arg/*]*/) {
+        for (String each : arg) {
+        }
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test60_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test60_out.java
new file mode 100644
index 0000000..22dd6d1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test60_out.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+    /**
+     * @param param
+     */
+    void m(String... /*[*/param/*]*/) {
+        for (String each : param) {
+        }
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test61_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test61_in.java
new file mode 100644
index 0000000..41501d7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test61_in.java
@@ -0,0 +1,13 @@
+package p;
+
+class A {
+    void m() {
+    		int abc = 0;
+		if (true) {
+			 System.out.println(/*[*/abc/*]*/) // syntax error
+		}
+    }
+    void take(int abc) {
+        int x= abc;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test61_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test61_out.java
new file mode 100644
index 0000000..8bd8a22
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test61_out.java
@@ -0,0 +1,13 @@
+package p;
+
+class A {
+    void m() {
+    		int x = 0;
+		if (true) {
+			 System.out.println(/*[*/x/*]*/) // syntax error
+		}
+    }
+    void take(int abc) {
+        int x= abc;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test62_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test62_in.java
new file mode 100644
index 0000000..3ddff41
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test62_in.java
@@ -0,0 +1,12 @@
+package p;
+class A {
+	void m() {
+		final int a = 3;
+		final int /*[*/b/*]*/ = 3;
+		System.out.println(b);
+		final int b = 3;
+        System.out.println(b);
+		final int b = 3;
+		System.out.println(b);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test62_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test62_out.java
new file mode 100644
index 0000000..9c600b6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test62_out.java
@@ -0,0 +1,12 @@
+package p;
+class A {
+	void m() {
+		final int a = 3;
+		final int /*[*/xxx/*]*/ = 3;
+		System.out.println(xxx);
+		final int b = 3;
+        System.out.println(b);
+		final int b = 3;
+		System.out.println(b);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test63_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test63_in.java
new file mode 100644
index 0000000..8dff162
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test63_in.java
@@ -0,0 +1,12 @@
+package p;
+class A {
+	void m() {
+		final int a = 3;
+		final int b = 3;
+		System.out.println(b);
+		final int /*[*/b/*]*/ = 3;
+        System.out.println(b);
+		final int b = 3;
+		System.out.println(b);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test63_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test63_out.java
new file mode 100644
index 0000000..9c9decb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test63_out.java
@@ -0,0 +1,12 @@
+package p;
+class A {
+	void m() {
+		final int a = 3;
+		final int b = 3;
+		System.out.println(b);
+		final int /*[*/xxx/*]*/ = 3;
+        System.out.println(xxx);
+		final int b = 3;
+		System.out.println(b);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test64_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test64_in.java
new file mode 100644
index 0000000..f83fc10
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test64_in.java
@@ -0,0 +1,6 @@
+package p;
+class A {
+	void m() {
+		BigInteger /*[*/big/*]*/= new BigInteger("1");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test64_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test64_out.java
new file mode 100644
index 0000000..bcf82ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test64_out.java
@@ -0,0 +1,6 @@
+package p;
+class A {
+	void m() {
+		BigInteger /*[*/xxx/*]*/= new BigInteger("1");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test6_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test6_in.java
new file mode 100644
index 0000000..03073a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test6_in.java
@@ -0,0 +1,8 @@
+//rename to k
+package p;
+class A{
+	void m(int j){
+		int /*[*/i/*]*/= 0;
+		m(i);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test6_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test6_out.java
new file mode 100644
index 0000000..1c7a1d9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test6_out.java
@@ -0,0 +1,8 @@
+//rename to k
+package p;
+class A{
+	void m(int j){
+		int /*[*/k/*]*/= 0;
+		m(k);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test7_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test7_in.java
new file mode 100644
index 0000000..385933c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test7_in.java
@@ -0,0 +1,11 @@
+//rename to k
+package p;
+class B{
+	int i;
+}
+class A extends B{
+	void m(){
+		A /*[*/i/*]*/= null;
+		super.i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test7_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test7_out.java
new file mode 100644
index 0000000..3b9fc2e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/canRename/A_test7_out.java
@@ -0,0 +1,11 @@
+//rename to k
+package p;
+class B{
+	int i;
+}
+class A extends B{
+	void m(){
+		A /*[*/k/*]*/= null;
+		super.i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail0.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail0.java
new file mode 100644
index 0000000..b2ff9fd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail0.java
@@ -0,0 +1,13 @@
+//cannot rename to: j
+package p;
+class A{
+	void m(){
+		/*[*/final int i= 0;/*]*/
+		class X{
+			int j;
+			void m(){
+				j= i;
+			}
+		}
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail1.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail1.java
new file mode 100644
index 0000000..2ee470f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail1.java
@@ -0,0 +1,7 @@
+//nothing to rename
+package p;
+class A{
+	void m(){
+		/*[*//*]*/
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail10.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail10.java
new file mode 100644
index 0000000..9926ebf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail10.java
@@ -0,0 +1,5 @@
+//nothing to rename
+package p;
+abstract class A{
+	/*[*/abstract void m(int i, int j);/*]*/
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail11.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail11.java
new file mode 100644
index 0000000..2655ab2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail11.java
@@ -0,0 +1,5 @@
+//not on interfaces
+package p;
+interface A{
+	 void m(int /*[*/i/*]*/, int j);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail12.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail12.java
new file mode 100644
index 0000000..098e5a4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail12.java
@@ -0,0 +1,12 @@
+//cannot rename to j
+package p;
+class A{
+	void m(){
+		final int /*[*/i/*]*/= 0;
+		A a= new A(){
+			void m(int j){
+				int u= i;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail13.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail13.java
new file mode 100644
index 0000000..79b12d9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail13.java
@@ -0,0 +1,9 @@
+//cannot rename to j
+package p;
+class A{
+	int j;
+	void m(){
+		int /*[*/i/*]*/;
+		j= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail14.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail14.java
new file mode 100644
index 0000000..72f8166
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail14.java
@@ -0,0 +1,12 @@
+//cannot rename to j
+package p;
+class A{
+	int k;
+	static class j{
+		static int k;
+	}
+	void m(){
+		A /*[*/i/*]*/;
+		j.k= 0;
+	}
+}	
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail15.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail15.java
new file mode 100644
index 0000000..0921782
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail15.java
@@ -0,0 +1,9 @@
+//cannot rename to: j
+package p;
+class A{
+	void m(){
+		int /*[*/i/*]*/;
+		for (int j= 0; j < 10; j++){
+		}
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail16.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail16.java
new file mode 100644
index 0000000..5b3e532
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail16.java
@@ -0,0 +1,10 @@
+//cannot rename to: j
+package p;
+class A{
+	void m(){
+		int /*[*/i/*]*/;
+		for (int k= 0, j= 0;;) {
+		}
+		
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail17.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail17.java
new file mode 100644
index 0000000..2f2cb76
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail17.java
@@ -0,0 +1,12 @@
+//cannot rename to: j
+package p;
+class A{
+	void m(){
+		int /*[*/i/*]*/;
+		try{
+			m(1);
+		}
+		catch (Throwable j){
+		}
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail18.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail18.java
new file mode 100644
index 0000000..f76e54f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail18.java
@@ -0,0 +1,9 @@
+//cannot rename to: j
+package p;
+class A{
+	String j;
+	void m(){
+		int /*[*/i/*]*/=0;
+		j.toString();	
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail19.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail19.java
new file mode 100644
index 0000000..373e2fb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail19.java
@@ -0,0 +1,11 @@
+//cannot rename to: j
+package p;
+class B{
+	int j;
+}
+class A extends B{
+	void m(){
+		int /*[*/i/*]*/;
+		j= 0;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail2.java
new file mode 100644
index 0000000..dc9612f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail2.java
@@ -0,0 +1,8 @@
+//cannot rename to i, i
+package p;
+class A{
+	int m(){
+		int i, int /*[*/j/*]*/;
+		return 0;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail20.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail20.java
new file mode 100644
index 0000000..72a3673
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail20.java
@@ -0,0 +1,11 @@
+//cannot rename to: j
+package p;
+interface B{
+	int j= 0;
+}
+class A implements B{
+	void m(){
+		int /*[*/i/*]*/=0;
+		int y= j;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail21.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail21.java
new file mode 100644
index 0000000..c215b88
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail21.java
@@ -0,0 +1,4 @@
+package p;
+abstract class A{
+	abstract void m(int /*[*/i/*]*/);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail22.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail22.java
new file mode 100644
index 0000000..82c2fed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail22.java
@@ -0,0 +1,4 @@
+package p;
+interface A{
+	/*[*/void m(int i);/*]*/
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail23.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail23.java
new file mode 100644
index 0000000..88e2b90
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail23.java
@@ -0,0 +1,5 @@
+//rename to j
+package p;
+class A{
+	native void m(int /*[*/i/*]*/);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail24.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail24.java
new file mode 100644
index 0000000..50ba9ca
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail24.java
@@ -0,0 +1,8 @@
+//compile error
+package p;
+class A{
+	void m(int f){
+		final int /*[*/i/*]*/= 0;
+		m(t);
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail25.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail25.java
new file mode 100644
index 0000000..ddf132b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail25.java
@@ -0,0 +1,13 @@
+//cannot rename i to j
+package p;
+class A{
+	void m(){
+		final int /*[*/i/*]*/= 0;
+		new A(){
+			void f(){
+				int j= 0;
+				int i2= i;
+			}
+		};
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail26.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail26.java
new file mode 100644
index 0000000..7577387
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail26.java
@@ -0,0 +1,14 @@
+//renaming to: j
+package p;
+class A{
+	int j;
+	int m(final int k){
+		final int /*[*/i/*]*/= 0;
+		new A(){
+			int m(int o){
+				return i;
+			}
+		};
+		return i + m(m(i));
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail27.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail27.java
new file mode 100644
index 0000000..73d9162
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail27.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	void m(int /*[*/i/*]*/, int j){
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail28.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail28.java
new file mode 100644
index 0000000..ff007f7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail28.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void m(int /*[*/i/*]*/){
+		int j;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail3.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail3.java
new file mode 100644
index 0000000..c8c9971
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail3.java
@@ -0,0 +1,9 @@
+//cannot rename to: i, 9
+package p;
+class A{
+	int m(){
+		int i;
+		int /*[*/j/*]*/;
+			return 0;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail4.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail4.java
new file mode 100644
index 0000000..f0ca374
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail4.java
@@ -0,0 +1,8 @@
+//cannot rename to: j
+package p;
+class A{
+	int m(int j){
+		int /*[*/i/*]*/;
+		return 0;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail5.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail5.java
new file mode 100644
index 0000000..d16a995
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail5.java
@@ -0,0 +1,11 @@
+//cannot rename to: j
+package p;
+class A{
+	int m(){
+		int /*[*/i/*]*/;
+		{
+			int j;
+		}
+				return 0;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail6.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail6.java
new file mode 100644
index 0000000..e1db7dd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail6.java
@@ -0,0 +1,14 @@
+//cannot rename to: j
+package p;
+class A{
+	int m(){
+		final int /*[*/i/*]*/=0;
+		class X{
+			int j;
+			void m(){
+				j= i;
+			}
+		}
+		return 0;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail7.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail7.java
new file mode 100644
index 0000000..e18ca12
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail7.java
@@ -0,0 +1,12 @@
+//cannot rename to: j
+package p;
+class B{
+	int j;
+}
+class A extends B{
+	int m(){
+		int /*[*/i/*]*/=0;
+		j= 0;
+		return 0;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail8.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail8.java
new file mode 100644
index 0000000..9fa8f99
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail8.java
@@ -0,0 +1,12 @@
+//cannot rename to: j
+package p;
+interface B{
+	int j= 0;
+}
+class A implements B{
+	int m(){
+		int /*[*/i/*]*/=0;
+		i= j;
+		return 0;
+	};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail9.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail9.java
new file mode 100644
index 0000000..9a4e5ed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTemp/cannotRename/A_testFail9.java
@@ -0,0 +1,13 @@
+//cannot rename to: j
+package p;
+
+class B{
+	int j;
+	class A {
+		int m(){
+			int /*[*/i/*]*/=0;
+			i= j;
+			return 0;
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test0/in/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test0/in/A.java
@@ -0,0 +1,3 @@
+package p;
+class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test0/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test0/out/B.java
new file mode 100644
index 0000000..d110d65
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test0/out/B.java
@@ -0,0 +1,3 @@
+package p;
+class B{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test1/in/A.java
new file mode 100644
index 0000000..bddabc6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test1/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+  A a;
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test1/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test1/out/B.java
new file mode 100644
index 0000000..7cad311
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test1/out/B.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+  B a;
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test10/in/A.java
new file mode 100644
index 0000000..8d59977
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test10/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+   A A;
+   A A(A A){
+     A:
+        for (;;){
+          if (A.A(A)==A)
+             break A;
+        }
+      return A;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test10/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test10/out/B.java
new file mode 100644
index 0000000..2eafbb8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test10/out/B.java
@@ -0,0 +1,12 @@
+package p;
+class B{
+   B A;
+   B A(B A){
+     A:
+        for (;;){
+          if (A.A(A)==A)
+             break A;
+        }
+      return A;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/in/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/in/A.java
@@ -0,0 +1,3 @@
+package p;
+class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/in/AA.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/in/AA.java
new file mode 100644
index 0000000..480ae03
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/in/AA.java
@@ -0,0 +1,3 @@
+package p;
+class AA extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/out/AA.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/out/AA.java
new file mode 100644
index 0000000..20face0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/out/AA.java
@@ -0,0 +1,3 @@
+package p;
+class AA extends B{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/out/B.java
new file mode 100644
index 0000000..d110d65
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test11/out/B.java
@@ -0,0 +1,3 @@
+package p;
+class B{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test12/in/A.java
new file mode 100644
index 0000000..6c84ebf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test12/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+  void m(){
+    A a = (A)new Object();
+  };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test12/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test12/out/B.java
new file mode 100644
index 0000000..1cb62a5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test12/out/B.java
@@ -0,0 +1,6 @@
+package p;
+class B{
+  void m(){
+    B a = (B)new Object();
+  };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test13/in/A.java
new file mode 100644
index 0000000..cd57777
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test13/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+  void m(){
+    boolean b = (new A()) instanceof A;
+  };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test13/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test13/out/B.java
new file mode 100644
index 0000000..5925007
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test13/out/B.java
@@ -0,0 +1,6 @@
+package p;
+class B{
+  void m(){
+    boolean b = (new B()) instanceof B;
+  };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test14/in/A.java
new file mode 100644
index 0000000..1a3912e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test14/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+  A a = new A();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test14/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test14/out/B.java
new file mode 100644
index 0000000..926aaed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test14/out/B.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+  B a = new B();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test15/in/A.java
new file mode 100644
index 0000000..cd26dd8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test15/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+   static void s(){};
+}
+class AA{
+   AA(){ 
+     A.s();
+   };   
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test15/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test15/out/B.java
new file mode 100644
index 0000000..6fc6056
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test15/out/B.java
@@ -0,0 +1,9 @@
+package p;
+class B{
+   static void s(){};
+}
+class AA{
+   AA(){ 
+     B.s();
+   };   
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test16/in/A.java
new file mode 100644
index 0000000..65fdbac
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test16/in/A.java
@@ -0,0 +1,23 @@
+package p;
+class A{
+   boolean A = new A() instanceof A;
+   A A(A A){
+     A:
+        for (;;){
+          if (A.A(A)==A)
+             break A;
+        }
+      return A;
+   };
+}
+class AA extends A{
+   A A = (A) new A();
+   A A(A A){
+     A:
+        for (;;){
+          if (A.A(A)==A)
+             break A;
+        }
+      return A;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test16/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test16/out/B.java
new file mode 100644
index 0000000..e2d8732
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test16/out/B.java
@@ -0,0 +1,23 @@
+package p;
+class B{
+   boolean A = new B() instanceof B;
+   B A(B A){
+     A:
+        for (;;){
+          if (A.A(A)==A)
+             break A;
+        }
+      return A;
+   };
+}
+class AA extends B{
+   B A = (B) new B();
+   B A(B A){
+     A:
+        for (;;){
+          if (A.A(A)==A)
+             break A;
+        }
+      return A;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test17/in/A.java
new file mode 100644
index 0000000..dd850ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test17/in/A.java
@@ -0,0 +1,7 @@
+package p;
+interface I{
+  int A = 0;
+}
+class A{
+  int A = I.A; 
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test17/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test17/out/B.java
new file mode 100644
index 0000000..77da929
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test17/out/B.java
@@ -0,0 +1,7 @@
+package p;
+interface I{
+  int A = 0;
+}
+class B{
+  int A = I.A; 
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test18/in/A.java
new file mode 100644
index 0000000..791c40d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test18/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A extends Exception{
+}
+class AA{
+  void m(){
+    try {
+      throw new A();
+    }
+    catch(A a){}
+  }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test18/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test18/out/B.java
new file mode 100644
index 0000000..f7ee99a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test18/out/B.java
@@ -0,0 +1,11 @@
+package p;
+class B extends Exception{
+}
+class AA{
+  void m(){
+    try {
+      throw new B();
+    }
+    catch(B a){}
+  }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test19/in/A.java
new file mode 100644
index 0000000..e9efa72
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test19/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A extends Exception{
+  void m(){
+    try {
+      throw new A();
+    }
+    catch(A A){}
+  }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test19/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test19/out/B.java
new file mode 100644
index 0000000..3d493fb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test19/out/B.java
@@ -0,0 +1,9 @@
+package p;
+class B extends Exception{
+  void m(){
+    try {
+      throw new B();
+    }
+    catch(B A){}
+  }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test2/in/A.java
new file mode 100644
index 0000000..efd6ca8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test2/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+  int A;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test2/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test2/out/B.java
new file mode 100644
index 0000000..96d20fc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test2/out/B.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+  int A;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test20/in/A.java
new file mode 100644
index 0000000..42c0104
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test20/in/A.java
@@ -0,0 +1,3 @@
+package A;
+class A{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test20/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test20/out/B.java
new file mode 100644
index 0000000..f585c27
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test20/out/B.java
@@ -0,0 +1,3 @@
+package A;
+class B{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test21/in/A.java
new file mode 100644
index 0000000..9674a71
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test21/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+  void m(){
+    for (A A=new A();;) continue;
+  };
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test21/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test21/out/B.java
new file mode 100644
index 0000000..e7079e7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test21/out/B.java
@@ -0,0 +1,6 @@
+package p;
+class B{
+  void m(){
+    for (B A=new B();;) continue;
+  };
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test22/in/A.java
new file mode 100644
index 0000000..efd0589
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test22/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+  A(){};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test22/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test22/out/B.java
new file mode 100644
index 0000000..0154750
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test22/out/B.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+  B(){};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test23/in/A.java
new file mode 100644
index 0000000..200fbc9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test23/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+  A[] a = new A[5];
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test23/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test23/out/B.java
new file mode 100644
index 0000000..e13f8d4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test23/out/B.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+  B[] a = new B[5];
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test24/in/A.java
new file mode 100644
index 0000000..b258bf2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test24/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A extends Exception{
+  void m() throws A
+  {};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test24/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test24/out/B.java
new file mode 100644
index 0000000..6bb1219
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test24/out/B.java
@@ -0,0 +1,5 @@
+package p;
+class B extends Exception{
+  void m() throws B
+  {};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test25/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test25/in/A.java
new file mode 100644
index 0000000..91b863c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test25/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+  Class c = A.class;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test25/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test25/out/B.java
new file mode 100644
index 0000000..5e58762
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test25/out/B.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+  Class c = B.class;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test26/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test26/in/A.java
new file mode 100644
index 0000000..36252a3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test26/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+  int x;
+  class Inner{
+    void m(){
+      A.this.x++;
+    }
+  }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test26/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test26/out/B.java
new file mode 100644
index 0000000..23e2e05
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test26/out/B.java
@@ -0,0 +1,9 @@
+package p;
+class B{
+  int x;
+  class Inner{
+    void m(){
+      B.this.x++;
+    }
+  }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test27/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test27/in/A.java
new file mode 100644
index 0000000..ea5823b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test27/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class Super{
+  int x;
+}
+class A extends Super{
+  String x;
+  class Inner{
+    void m(){
+      A.super.x++;
+    }
+  }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test27/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test27/out/B.java
new file mode 100644
index 0000000..e65f694
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test27/out/B.java
@@ -0,0 +1,12 @@
+package p;
+class Super{
+  int x;
+}
+class B extends Super{
+  String x;
+  class Inner{
+    void m(){
+      B.super.x++;
+    }
+  }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test28/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test28/in/A.java
new file mode 100644
index 0000000..c56d8e4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test28/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class Super{
+  void m1(){};
+}
+class A extends Super{
+  class Inner{
+    void m(){
+      A.super.m1();
+    }
+  }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test28/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test28/out/B.java
new file mode 100644
index 0000000..fbb2b02
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test28/out/B.java
@@ -0,0 +1,11 @@
+package p;
+class Super{
+  void m1(){};
+}
+class B extends Super{
+  class Inner{
+    void m(){
+      B.super.m1();
+    }
+  }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/in/A.java
new file mode 100644
index 0000000..b047e01
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/in/A.java
@@ -0,0 +1,2 @@
+package p;
+public class A{};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/in/C.java
new file mode 100644
index 0000000..ffcf8fd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/in/C.java
@@ -0,0 +1,3 @@
+package p1;
+import p.A;
+class C{}; 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/out/B.java
new file mode 100644
index 0000000..9840770
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/out/B.java
@@ -0,0 +1,2 @@
+package p;
+public class B{};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/out/C.java
new file mode 100644
index 0000000..3e07200
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test29/out/C.java
@@ -0,0 +1,3 @@
+package p1;
+import p.B;
+class C{}; 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test3/in/A.java
new file mode 100644
index 0000000..6857903
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test3/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+}
+class AA extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test3/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test3/out/B.java
new file mode 100644
index 0000000..72a47fc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test3/out/B.java
@@ -0,0 +1,5 @@
+package p;
+class B{
+}
+class AA extends B{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/in/A.java
new file mode 100644
index 0000000..9bbb4ae
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+   static int f;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/in/AA.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/in/AA.java
new file mode 100644
index 0000000..47f9fc0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/in/AA.java
@@ -0,0 +1,5 @@
+package p;
+class AA{
+   AA(){ A.f=0; };   
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/out/AA.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/out/AA.java
new file mode 100644
index 0000000..aaf251b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/out/AA.java
@@ -0,0 +1,5 @@
+package p;
+class AA{
+   AA(){ B.f=0; };   
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/out/B.java
new file mode 100644
index 0000000..ab72f87
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test30/out/B.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+   static int f;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/in/A.java
new file mode 100644
index 0000000..061be77
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/in/A.java
@@ -0,0 +1,2 @@
+package p;
+class A{};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/in/AA.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/in/AA.java
new file mode 100644
index 0000000..0bd204c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/in/AA.java
@@ -0,0 +1,5 @@
+package p;
+class AA{
+   Object a = new A(){
+              };
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/out/AA.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/out/AA.java
new file mode 100644
index 0000000..4cc1669
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/out/AA.java
@@ -0,0 +1,5 @@
+package p;
+class AA{
+   Object a = new B(){
+              };
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/out/B.java
new file mode 100644
index 0000000..4c03080
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test31/out/B.java
@@ -0,0 +1,2 @@
+package p;
+class B{};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test32/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test32/in/A.java
new file mode 100644
index 0000000..3486407
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test32/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+}
+class C{
+  C(A a){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test32/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test32/out/B.java
new file mode 100644
index 0000000..a7c1128
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test32/out/B.java
@@ -0,0 +1,6 @@
+package p;
+class B{
+}
+class C{
+  C(B a){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test33/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test33/in/A.java
new file mode 100644
index 0000000..de8a1e1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test33/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A extends Exception{
+}
+class C{
+  C() throws A {};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test33/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test33/out/B.java
new file mode 100644
index 0000000..730a0ef
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test33/out/B.java
@@ -0,0 +1,6 @@
+package p;
+class B extends Exception{
+}
+class C{
+  C() throws B {};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test34/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test34/in/A.java
new file mode 100644
index 0000000..7fe39a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test34/in/A.java
@@ -0,0 +1,5 @@
+// 2 occurences
+package p;
+public class A {
+	{A a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test34/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test34/out/B.java
new file mode 100644
index 0000000..cedeb23
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test34/out/B.java
@@ -0,0 +1,5 @@
+// 2 occurences
+package p;
+public class B {
+	{B a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test35/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test35/in/A.java
new file mode 100644
index 0000000..d3969f2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test35/in/A.java
@@ -0,0 +1,5 @@
+//2 occurences
+package p;
+public class A {
+	static {A a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test35/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test35/out/B.java
new file mode 100644
index 0000000..161b651
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test35/out/B.java
@@ -0,0 +1,5 @@
+//2 occurences
+package p;
+public class B {
+	static {B a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test36/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test36/in/A.java
new file mode 100644
index 0000000..80671d0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test36/in/A.java
@@ -0,0 +1,6 @@
+//3 occurences
+package p;
+public class A {
+	static {A a;}
+	static {A a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test36/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test36/out/B.java
new file mode 100644
index 0000000..d99b282
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test36/out/B.java
@@ -0,0 +1,6 @@
+//3 occurences
+package p;
+public class B {
+	static {B a;}
+	static {B a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test37/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test37/in/A.java
new file mode 100644
index 0000000..a5cf5ba
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test37/in/A.java
@@ -0,0 +1,6 @@
+//3 occurences
+package p;
+public class A {
+	static {A a;}
+	{A a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test37/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test37/out/B.java
new file mode 100644
index 0000000..0a55f97
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test37/out/B.java
@@ -0,0 +1,6 @@
+//3 occurences
+package p;
+public class B {
+	static {B a;}
+	{B a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test38/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test38/in/A.java
new file mode 100644
index 0000000..9b76ec0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test38/in/A.java
@@ -0,0 +1,8 @@
+//2 occurences
+package p;
+public class A {
+}
+
+class C{
+	{A a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test38/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test38/out/B.java
new file mode 100644
index 0000000..9084847
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test38/out/B.java
@@ -0,0 +1,8 @@
+//2 occurences
+package p;
+public class B {
+}
+
+class C{
+	{B a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test39/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test39/in/A.java
new file mode 100644
index 0000000..806e5a6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test39/in/A.java
@@ -0,0 +1,8 @@
+//2 occurences
+package p;
+public class A {
+}
+
+class C{
+	static {A a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test39/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test39/out/B.java
new file mode 100644
index 0000000..f7855ef
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test39/out/B.java
@@ -0,0 +1,8 @@
+//2 occurences
+package p;
+public class B {
+}
+
+class C{
+	static {B a;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test4/in/A.java
new file mode 100644
index 0000000..1091280
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test4/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+   void A(){};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test4/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test4/out/B.java
new file mode 100644
index 0000000..4f70464
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test4/out/B.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+   void A(){};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test40/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test40/in/A.java
new file mode 100644
index 0000000..ad31dc6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test40/in/A.java
@@ -0,0 +1,12 @@
+package p;
+//1 occurence
+public class A {
+}
+
+class C {
+	void m() {
+		class A{
+		}
+		new A();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test40/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test40/out/B.java
new file mode 100644
index 0000000..3e19bb4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test40/out/B.java
@@ -0,0 +1,12 @@
+package p;
+//1 occurence
+public class B {
+}
+
+class C {
+	void m() {
+		class A{
+		}
+		new A();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test41/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test41/in/A.java
new file mode 100644
index 0000000..04f17fd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test41/in/A.java
@@ -0,0 +1,8 @@
+package p;
+public class A {
+	A(A A){}
+	A A(A A){
+		A= new A(new A(A));
+		return A;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test41/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test41/out/B.java
new file mode 100644
index 0000000..dddd152
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test41/out/B.java
@@ -0,0 +1,8 @@
+package p;
+public class B {
+	B(B A){}
+	B A(B A){
+		A= new B(new B(A));
+		return A;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test42/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test42/in/A.java
new file mode 100644
index 0000000..5418dd9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test42/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A {
+	A(A A){}
+	A A(A A){
+		A= new A(new A(A));
+		return A;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test42/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test42/out/B.java
new file mode 100644
index 0000000..744edb4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test42/out/B.java
@@ -0,0 +1,8 @@
+package p;
+class B {
+	B(B A){}
+	B A(B A){
+		A= new B(new B(A));
+		return A;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test43/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test43/in/A.java
new file mode 100644
index 0000000..d187f54
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test43/in/A.java
@@ -0,0 +1,10 @@
+//renaming A to B
+package p;
+public class A {
+	static A A;
+}
+class X extends p.A{
+	void x(){
+		p.A.A= A.A;//fields come first
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test43/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test43/out/B.java
new file mode 100644
index 0000000..20e2727
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test43/out/B.java
@@ -0,0 +1,10 @@
+//renaming A to B
+package p;
+public class B {
+	static B A;
+}
+class X extends p.B{
+	void x(){
+		p.B.A= A.A;//fields come first
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test44/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test44/in/A.java
new file mode 100644
index 0000000..04c067d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test44/in/A.java
@@ -0,0 +1,7 @@
+//renaming A to B
+package p;
+interface A {
+}
+class K implements A{
+}
+interface C extends A{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test44/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test44/out/B.java
new file mode 100644
index 0000000..f9d3d92
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test44/out/B.java
@@ -0,0 +1,7 @@
+//renaming A to B
+package p;
+interface B {
+}
+class K implements B{
+}
+interface C extends B{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test45/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test45/in/A.java
new file mode 100644
index 0000000..18d05b7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test45/in/A.java
@@ -0,0 +1,10 @@
+//renaming A to B
+package p;
+ class A {
+	static A A;
+}
+class X extends p.A{
+	void x(){
+		p.A.A= A.A;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test45/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test45/out/B.java
new file mode 100644
index 0000000..61d6943
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test45/out/B.java
@@ -0,0 +1,10 @@
+//renaming A to B
+package p;
+ class B {
+	static B A;
+}
+class X extends p.B{
+	void x(){
+		p.B.A= A.A;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/in/A.java
new file mode 100644
index 0000000..b047e01
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/in/A.java
@@ -0,0 +1,2 @@
+package p;
+public class A{};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/in/C.java
new file mode 100644
index 0000000..ffcf8fd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/in/C.java
@@ -0,0 +1,3 @@
+package p1;
+import p.A;
+class C{}; 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/out/B.java
new file mode 100644
index 0000000..9840770
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/out/B.java
@@ -0,0 +1,2 @@
+package p;
+public class B{};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/out/C.java
new file mode 100644
index 0000000..3e07200
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test46/out/C.java
@@ -0,0 +1,3 @@
+package p1;
+import p.B;
+class C{}; 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test47/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test47/in/A.java
new file mode 100644
index 0000000..6ae44a0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test47/in/A.java
@@ -0,0 +1,10 @@
+//renaming A to B
+package p;
+class A{
+	A	( ){};
+};
+class C{
+	void s(){
+	new A ( );
+	}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test47/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test47/out/B.java
new file mode 100644
index 0000000..6d95d4f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test47/out/B.java
@@ -0,0 +1,10 @@
+//renaming A to B
+package p;
+class B{
+	B	( ){};
+};
+class C{
+	void s(){
+	new B ( );
+	}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test48/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test48/in/A.java
new file mode 100644
index 0000000..92da31a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test48/in/A.java
@@ -0,0 +1,10 @@
+//renaming A to B
+package p;
+class A{
+	A	( ){};
+};
+class C{
+	void s(){
+	new p . A ( );
+	}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test48/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test48/out/B.java
new file mode 100644
index 0000000..6fc2e7c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test48/out/B.java
@@ -0,0 +1,10 @@
+//renaming A to B
+package p;
+class B{
+	B	( ){};
+};
+class C{
+	void s(){
+	new p . B ( );
+	}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test49/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test49/in/A.java
new file mode 100644
index 0000000..dc7c33d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test49/in/A.java
@@ -0,0 +1,18 @@
+//renaming A to B
+package p;
+class A{
+	A	( ){};
+	static int fgT;
+};
+class C{
+	void s(){
+	new p . A ( );
+	p
+	.
+	A
+	.
+	fgT
+	=
+	6;
+	}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test49/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test49/out/B.java
new file mode 100644
index 0000000..9c92c70
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test49/out/B.java
@@ -0,0 +1,18 @@
+//renaming A to B
+package p;
+class B{
+	B	( ){};
+	static int fgT;
+};
+class C{
+	void s(){
+	new p . B ( );
+	p
+	.
+	B
+	.
+	fgT
+	=
+	6;
+	}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test5/in/A.java
new file mode 100644
index 0000000..efce98d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test5/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+   void m(A a){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test5/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test5/out/B.java
new file mode 100644
index 0000000..bfca111
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test5/out/B.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+   void m(B a){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test50/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test50/in/A.java
new file mode 100644
index 0000000..6cd6718
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test50/in/A.java
@@ -0,0 +1,14 @@
+//renaming A to B
+package p;
+/**
+ * Extends {@linkplain A A}.
+ * @see A#A()
+ */
+class A{
+	A( ){};
+};
+class C extends A{
+	C(){
+		super();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test50/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test50/out/B.java
new file mode 100644
index 0000000..33ff76e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test50/out/B.java
@@ -0,0 +1,14 @@
+//renaming A to B
+package p;
+/**
+ * Extends {@linkplain B A}.
+ * @see B#B()
+ */
+class B{
+	B( ){};
+};
+class C extends B{
+	C(){
+		super();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/in/A.java
new file mode 100644
index 0000000..c57bddf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/in/A.java
@@ -0,0 +1,4 @@
+package p;
+public class A{
+ public class X{}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/in/C.java
new file mode 100644
index 0000000..a10bebd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/in/C.java
@@ -0,0 +1,3 @@
+package p1;
+import p.A.*;
+class C{}; 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/out/B.java
new file mode 100644
index 0000000..dfa16de
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/out/B.java
@@ -0,0 +1,4 @@
+package p;
+public class B{
+ public class X{}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/out/C.java
new file mode 100644
index 0000000..149a043
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test51/out/C.java
@@ -0,0 +1,3 @@
+package p1;
+import p.B.*;
+class C{}; 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test52/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test52/in/A.java
new file mode 100644
index 0000000..5e98305
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test52/in/A.java
@@ -0,0 +1,6 @@
+package p;
+public class A{
+	A[] m(){
+		return (A[])new A[3];
+	}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test52/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test52/out/B.java
new file mode 100644
index 0000000..28cefd2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test52/out/B.java
@@ -0,0 +1,6 @@
+package p;
+public class B{
+	B[] m(){
+		return (B[])new B[3];
+	}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test53/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test53/in/A.java
new file mode 100644
index 0000000..8237dbe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test53/in/A.java
@@ -0,0 +1,9 @@
+//no ref update
+package p;
+public class A{
+	A(){}
+	A(A A){}
+	A m(){
+		return (A)new A();
+	}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test53/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test53/out/B.java
new file mode 100644
index 0000000..9afa2e5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test53/out/B.java
@@ -0,0 +1,9 @@
+//no ref update
+package p;
+public class B{
+	B(){}
+	B(A A){}
+	A m(){
+		return (A)new A();
+	}
+};
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test54/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test54/in/A.java
new file mode 100644
index 0000000..67a5e75
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test54/in/A.java
@@ -0,0 +1,16 @@
+//rename X to XYZ
+package p;
+public class A{
+	class X{
+		X(X X){new X(null);}
+	}
+	A(){}
+	A(A A){}
+	A m(){
+		new X(null);
+		return (A)new A();
+	}
+};
+class B{
+	A.X ax= new A().new X(null);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test54/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test54/out/A.java
new file mode 100644
index 0000000..efea233
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test54/out/A.java
@@ -0,0 +1,16 @@
+//rename X to XYZ
+package p;
+public class A{
+	class XYZ{
+		XYZ(XYZ X){new XYZ(null);}
+	}
+	A(){}
+	A(A A){}
+	A m(){
+		new XYZ(null);
+		return (A)new A();
+	}
+};
+class B{
+	A.XYZ ax= new A().new XYZ(null);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test55/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test55/in/A.java
new file mode 100644
index 0000000..5abee52
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test55/in/A.java
@@ -0,0 +1,16 @@
+//rename X to XYZ - no ref update
+package p;
+public class A{
+	class X{
+		X(X X){new X(null);}
+	}
+	A(){}
+	A(A A){}
+	A m(){
+		new X(null);
+		return (A)new A();
+	}
+};
+class B{
+	A.X ax= new A().new X(null);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test55/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test55/out/A.java
new file mode 100644
index 0000000..3a6a288
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test55/out/A.java
@@ -0,0 +1,16 @@
+//rename X to XYZ - no ref update
+package p;
+public class A{
+	class XYZ{
+		XYZ(X X){new X(null);}
+	}
+	A(){}
+	A(A A){}
+	A m(){
+		new X(null);
+		return (A)new A();
+	}
+};
+class B{
+	A.X ax= new A().new X(null);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/in/A.java
new file mode 100644
index 0000000..92da053
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/in/A.java
@@ -0,0 +1,4 @@
+package a.a;
+class A {
+    A() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/in/B.java
new file mode 100644
index 0000000..66b8fb2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/in/B.java
@@ -0,0 +1,4 @@
+package a.a;
+class B {
+public A theA;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/in/default/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/in/default/A.java
new file mode 100644
index 0000000..c3f152c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/in/default/A.java
@@ -0,0 +1,3 @@
+class A {
+    A() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/out/A.java
new file mode 100644
index 0000000..92da053
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/out/A.java
@@ -0,0 +1,4 @@
+package a.a;
+class A {
+    A() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/out/B.java
new file mode 100644
index 0000000..66b8fb2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/out/B.java
@@ -0,0 +1,4 @@
+package a.a;
+class B {
+public A theA;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/out/default/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/out/default/B.java
new file mode 100644
index 0000000..c21ade7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test56/out/default/B.java
@@ -0,0 +1,3 @@
+class B {
+    B() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test57/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test57/in/A.java
new file mode 100644
index 0000000..52cf640
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test57/in/A.java
@@ -0,0 +1,10 @@
+package p;
+/**
+ * p.A 
+ * AA A {@link p.A#a}, {@link p.A#b}
+ * @see p.A
+ */
+public class A{
+	A a;//A
+	String aa= "A";
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test57/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test57/out/B.java
new file mode 100644
index 0000000..714e2bc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test57/out/B.java
@@ -0,0 +1,10 @@
+package p;
+/**
+ * p.B 
+ * AA B {@link p.B#a}, {@link p.B#b}
+ * @see p.B
+ */
+public class B{
+	B a;//B
+	String aa= "B";
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test58/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test58/in/A.java
new file mode 100644
index 0000000..0b139ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test58/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class Sup{
+	static int CONSTANT= 0;
+}
+class A extends Sup {
+}
+
+class Test {
+  public static void main(String[] arguments) {
+    System.out.println(A.CONSTANT);
+  }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test58/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test58/out/B.java
new file mode 100644
index 0000000..d6da1b0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test58/out/B.java
@@ -0,0 +1,12 @@
+package p;
+class Sup{
+	static int CONSTANT= 0;
+}
+class B extends Sup {
+}
+
+class Test {
+  public static void main(String[] arguments) {
+    System.out.println(B.CONSTANT);
+  }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test59/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test59/in/A.java
new file mode 100644
index 0000000..3faabb5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test59/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A {
+	void f(){
+		A a= ( A )this;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test59/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test59/out/B.java
new file mode 100644
index 0000000..f8e4430
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test59/out/B.java
@@ -0,0 +1,6 @@
+package p;
+class B {
+	void f(){
+		B a= ( B )this;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test6/in/A.java
new file mode 100644
index 0000000..c96f5c8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test6/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+   void m(A A){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test6/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test6/out/B.java
new file mode 100644
index 0000000..e32d1a0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test6/out/B.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+   void m(B A){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test60/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test60/in/A.java
new file mode 100644
index 0000000..05032ad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test60/in/A.java
@@ -0,0 +1,9 @@
+package p;
+/**
+ * p.A 
+ * AA A
+ */
+public class A{
+	A a;//A
+	String aa= "C:\\A.java";
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test60/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test60/out/B.java
new file mode 100644
index 0000000..965f4b4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test60/out/B.java
@@ -0,0 +1,9 @@
+package p;
+/**
+ * p.B 
+ * AA B
+ */
+public class B{
+	B a;//B
+	String aa= "C:\\B.java";
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test61/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test61/in/A.java
new file mode 100644
index 0000000..d53e16e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test61/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+   class Inner{
+   }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test61/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test61/out/A.java
new file mode 100644
index 0000000..eb1966f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test61/out/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+   class InnerB{
+   }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test62/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test62/in/A.java
new file mode 100644
index 0000000..05032ad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test62/in/A.java
@@ -0,0 +1,9 @@
+package p;
+/**
+ * p.A 
+ * AA A
+ */
+public class A{
+	A a;//A
+	String aa= "C:\\A.java";
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test62/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test62/out/B.java
new file mode 100644
index 0000000..f81f8ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test62/out/B.java
@@ -0,0 +1,9 @@
+package p;
+/**
+ * p.B 
+ * AA B
+ */
+public class B{
+	A a;//B
+	String aa= "C:\\B.java";
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/in/A.java
new file mode 100644
index 0000000..ed3f456
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+/**
+ * See also p.A {@link p.A} and A
+ * @see p.A
+ */
+public class A {
+	String a= "A";
+	String pA= "p.A";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/in/anotherp/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/in/anotherp/A.java
new file mode 100644
index 0000000..f9e9e3a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/in/anotherp/A.java
@@ -0,0 +1,11 @@
+package another.p;
+
+/**
+ * See also another.p.A {@link another.p.A} and p.A, and A.
+ * @see another.p.A
+ */
+public class A {
+	String a= "A";
+	String pA= "p.A";
+	String anotherpA= "another.p.A";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/out/B.java
new file mode 100644
index 0000000..f04d2be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/out/B.java
@@ -0,0 +1,10 @@
+package p;
+
+/**
+ * See also p.B {@link p.B} and B
+ * @see p.B
+ */
+public class B {
+	String a= "B";
+	String pA= "p.B";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/out/anotherp/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/out/anotherp/A.java
new file mode 100644
index 0000000..ba40853
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test63/out/anotherp/A.java
@@ -0,0 +1,11 @@
+package another.p;
+
+/**
+ * See also another.p.A {@link another.p.A} and p.B, and B.
+ * @see another.p.A
+ */
+public class A {
+	String a= "B";
+	String pA= "p.B";
+	String anotherpA= "another.p.A";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/in/A.java
new file mode 100644
index 0000000..ed3f456
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+/**
+ * See also p.A {@link p.A} and A
+ * @see p.A
+ */
+public class A {
+	String a= "A";
+	String pA= "p.A";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/in/p2/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/in/p2/A.java
new file mode 100644
index 0000000..709fffa
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/in/p2/A.java
@@ -0,0 +1,11 @@
+package p2;
+
+/**
+ * See also p2.A {@link p2.A} and p.A, and A.
+ * @see p2.A
+ */
+public class A {
+	String a= "A";
+	String pA= "p.A";
+	String p2A= "p2.A";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/out/B.java
new file mode 100644
index 0000000..f04d2be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/out/B.java
@@ -0,0 +1,10 @@
+package p;
+
+/**
+ * See also p.B {@link p.B} and B
+ * @see p.B
+ */
+public class B {
+	String a= "B";
+	String pA= "p.B";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/out/p2/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/out/p2/A.java
new file mode 100644
index 0000000..7f48303
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test64/out/p2/A.java
@@ -0,0 +1,11 @@
+package p2;
+
+/**
+ * See also p2.A {@link p2.A} and p.B, and B.
+ * @see p2.A
+ */
+public class A {
+	String a= "B";
+	String pA= "p.B";
+	String p2A= "p2.A";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test7/in/A.java
new file mode 100644
index 0000000..ff50450
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test7/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+   A m(){return null;};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test7/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test7/out/B.java
new file mode 100644
index 0000000..38e8cf2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test7/out/B.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+   B m(){return null;};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test8/in/A.java
new file mode 100644
index 0000000..8d3c292
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test8/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+   void m(){
+     A: return;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test8/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test8/out/B.java
new file mode 100644
index 0000000..62858b8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test8/out/B.java
@@ -0,0 +1,6 @@
+package p;
+class B{
+   void m(){
+     A: return;
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test9/in/A.java
new file mode 100644
index 0000000..5d48bdf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test9/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+   void m(){
+     A A; 
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test9/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test9/out/B.java
new file mode 100644
index 0000000..3f6c10b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/test9/out/B.java
@@ -0,0 +1,6 @@
+package p;
+class B{
+   void m(){
+     B A; 
+   };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation1/in/A.java
new file mode 100644
index 0000000..beb259d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation1/in/A.java
@@ -0,0 +1,16 @@
+package p;
+@interface A {
+    enum E {
+       ONE, TWO, THREE
+    }
+}
+
+/**
+ * @see p.A
+ */
+@A
+class Client {
+    @Deprecated @A() void bad() {
+        
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation1/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation1/out/B.java
new file mode 100644
index 0000000..75504be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation1/out/B.java
@@ -0,0 +1,16 @@
+package p;
+@interface B {
+    enum E {
+       ONE, TWO, THREE
+    }
+}
+
+/**
+ * @see p.B
+ */
+@B
+class Client {
+    @Deprecated @B() void bad() {
+        
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation2/in/A.java
new file mode 100644
index 0000000..2f22ecf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation2/in/A.java
@@ -0,0 +1,21 @@
+package p;
+
+
+@interface A {
+    String value() default "";
+}
+
+@interface Main {
+   A child() default @A("Void");
+}
+
+@Main(child=@/*test*/A(""))
+@A
+class Client {
+    @Deprecated
+    @Main(/*implicit*/)
+    @A()
+    void bad() {
+        final @A int local= 0;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation2/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation2/out/B.java
new file mode 100644
index 0000000..772b22d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation2/out/B.java
@@ -0,0 +1,21 @@
+package p;
+
+
+@interface B {
+    String value() default "";
+}
+
+@interface Main {
+   B child() default @B("Void");
+}
+
+@Main(child=@/*test*/B(""))
+@B
+class Client {
+    @Deprecated
+    @Main(/*implicit*/)
+    @B()
+    void bad() {
+        final @B int local= 0;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation3/in/A.java
new file mode 100644
index 0000000..b2cfaf9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation3/in/A.java
@@ -0,0 +1,21 @@
+package p;
+
+import java.util.ArrayList;
+
+@Test.A
+class Test {
+    @interface A {
+        String value() default "NULL";
+    }
+    
+    @A("A and p.Test.A and p.A and q.Test.A")
+    void test () {
+        ArrayList<String> list= new ArrayList<String>() {
+            void sort() {
+                @A
+                int current= 0;
+                current++;
+            }
+        };
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation3/out/A.java
new file mode 100644
index 0000000..bba9290
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testAnnotation3/out/A.java
@@ -0,0 +1,21 @@
+package p;
+
+import java.util.ArrayList;
+
+@Test.B
+class Test {
+    @interface B {
+        String value() default "NULL";
+    }
+    
+    @B("B and p.Test.B and p.A and q.Test.A")
+    void test () {
+        ArrayList<String> list= new ArrayList<String>() {
+            void sort() {
+                @B
+                int current= 0;
+                current++;
+            }
+        };
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/in/A.java
new file mode 100644
index 0000000..a28390d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/in/A.java
@@ -0,0 +1,9 @@
+package p;
+public enum A {
+    ONE(1);
+    private int fNum;
+    public A(int num) {
+        fNum= num;
+    }
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/in/p2/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/in/p2/A.java
new file mode 100644
index 0000000..a34ecec
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/in/p2/A.java
@@ -0,0 +1,10 @@
+package p2;
+
+import static p.A.*;
+
+class A {
+    p.A a= ONE;
+    p.A b= p.A.ONE;
+    A a2= new A();
+    
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/out/B.java
new file mode 100644
index 0000000..b49a132
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/out/B.java
@@ -0,0 +1,9 @@
+package p;
+public enum B {
+    ONE(1);
+    private int fNum;
+    public B(int num) {
+        fNum= num;
+    }
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/out/p2/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/out/p2/A.java
new file mode 100644
index 0000000..76d8ab8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum1/out/p2/A.java
@@ -0,0 +1,10 @@
+package p2;
+
+import static p.B.*;
+
+class A {
+    p.B a= ONE;
+    p.B b= p.B.ONE;
+    A a2= new A();
+    
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum2/in/A.java
new file mode 100644
index 0000000..fffa831
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum2/in/A.java
@@ -0,0 +1,21 @@
+package p;
+
+enum A {
+    ONE {
+        String getKey() {
+            return "eis";
+        }
+        boolean longerNameThan(A other) {
+            return false;
+        }
+    },
+    BIG {
+        String getKey() {
+            return "riesig";
+        }
+        boolean longerNameThan(A other) {
+            return other != BIG;
+        }
+    };
+    abstract boolean longerNameThan(A a);
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum2/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum2/out/B.java
new file mode 100644
index 0000000..9f65447
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum2/out/B.java
@@ -0,0 +1,21 @@
+package p;
+
+enum B {
+    ONE {
+        String getKey() {
+            return "eis";
+        }
+        boolean longerNameThan(B other) {
+            return false;
+        }
+    },
+    BIG {
+        String getKey() {
+            return "riesig";
+        }
+        boolean longerNameThan(B other) {
+            return other != BIG;
+        }
+    };
+    abstract boolean longerNameThan(B a);
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/in/A.java
new file mode 100644
index 0000000..46068fb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/in/A.java
@@ -0,0 +1,4 @@
+package p;
+enum A {
+   ONE, TWO, THREE
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/in/Enumbered.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/in/Enumbered.java
new file mode 100644
index 0000000..e7d1f28
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/in/Enumbered.java
@@ -0,0 +1,20 @@
+package p;
+
+import static p.A.TWO;
+
+
+public interface Enumbered {
+    class Renumberer {
+        A tweak(A a) {
+            switch (a) {
+            case ONE:
+                return TWO;
+            case TWO:
+                return A.THREE;
+
+            default:
+                throw new IllegalArgumentException(a.toString());
+            }
+        }
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/out/B.java
new file mode 100644
index 0000000..fd8807b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/out/B.java
@@ -0,0 +1,4 @@
+package p;
+enum B {
+   ONE, TWO, THREE
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/out/Enumbered.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/out/Enumbered.java
new file mode 100644
index 0000000..2d144f5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum3/out/Enumbered.java
@@ -0,0 +1,20 @@
+package p;
+
+import static p.B.TWO;
+
+
+public interface Enumbered {
+    class Renumberer {
+        B tweak(B a) {
+            switch (a) {
+            case ONE:
+                return TWO;
+            case TWO:
+                return B.THREE;
+
+            default:
+                throw new IllegalArgumentException(a.toString());
+            }
+        }
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum4/in/A.java
new file mode 100644
index 0000000..fa3c4af
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum4/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class Outer {
+    enum A {
+       ONE, TWO, THREE
+    }
+}
+
+class User {
+    /**
+     * Uses {@link p.Outer.A#ONE}.
+     */
+    Outer.A a= p.Outer.A.ONE;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum4/out/A.java
new file mode 100644
index 0000000..0a0f328
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum4/out/A.java
@@ -0,0 +1,13 @@
+package p;
+class Outer {
+    enum B {
+       ONE, TWO, THREE
+    }
+}
+
+class User {
+    /**
+     * Uses {@link p.Outer.B#ONE}.
+     */
+    Outer.B a= p.Outer.B.ONE;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum5/in/A.java
new file mode 100644
index 0000000..6001d4a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum5/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+enum A {
+    ONE("Eins"), TWO("Zwei");
+    private String fGerman;
+
+    public A(String german) {
+        fGerman = german;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum5/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum5/out/B.java
new file mode 100644
index 0000000..79f5d40
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testEnum5/out/B.java
@@ -0,0 +1,10 @@
+package p;
+
+enum B {
+    ONE("Eins"), TWO("Zwei");
+    private String fGerman;
+
+    public B(String german) {
+        fGerman = german;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail0/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail0/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail00/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail00/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail00/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail01/in/A.java
new file mode 100644
index 0000000..f6daf1d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail01/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+}
+class C extends A{
+}
+class B extends C{
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail02/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail02/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail02/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail03/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail03/in/A.java
new file mode 100644
index 0000000..f6daf1d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail03/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+}
+class C extends A{
+}
+class B extends C{
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail04/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail04/in/A.java
new file mode 100644
index 0000000..f6daf1d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail04/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+}
+class C extends A{
+}
+class B extends C{
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail1/in/A.java
new file mode 100644
index 0000000..f6daf1d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail1/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+}
+class C extends A{
+}
+class B extends C{
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail10/in/A.java
new file mode 100644
index 0000000..a7cbe67
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail10/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+  class AA{
+     class AAA{
+        class B{
+        }
+     }
+  }
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail11/in/A.java
new file mode 100644
index 0000000..b376073
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail11/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+  class A{}
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail12/in/A.java
new file mode 100644
index 0000000..179edb2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail12/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+  interface B{}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail16/in/A.java
new file mode 100644
index 0000000..e325f6a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail16/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class Outer{
+  class A{}
+  class B{}
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail17/in/A.java
new file mode 100644
index 0000000..ae12ea2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail17/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class Outer{
+  class A{}
+  interface B{}
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail18/in/A.java
new file mode 100644
index 0000000..ad30f07
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail18/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class Outer{
+  class Inner{
+    class A{}
+    class B{}
+  }
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail19/in/A.java
new file mode 100644
index 0000000..ad30f07
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail19/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class Outer{
+  class Inner{
+    class A{}
+    class B{}
+  }
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail2/in/A.java
new file mode 100644
index 0000000..304ff48
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail2/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A extends B{
+}
+class B{
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail20/in/A.java
new file mode 100644
index 0000000..7ca9bbb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail20/in/A.java
@@ -0,0 +1,3 @@
+package p1;
+public class A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail20/in/AA.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail20/in/AA.java
new file mode 100644
index 0000000..74916a6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail20/in/AA.java
@@ -0,0 +1,4 @@
+package p2;
+import p1.*;
+class AA extends A{}
+class B extends AA{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail21/in/A.java
new file mode 100644
index 0000000..77c8e44
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail21/in/A.java
@@ -0,0 +1,2 @@
+package p1;
+class A{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail21/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail21/in/C.java
new file mode 100644
index 0000000..3681e46
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail21/in/C.java
@@ -0,0 +1,2 @@
+package p1.B;
+class C{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail22/in/A.java
new file mode 100644
index 0000000..32ba7d3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail22/in/A.java
@@ -0,0 +1,2 @@
+package p;
+class A{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail22/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail22/in/B.java
new file mode 100644
index 0000000..7c55812
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail22/in/B.java
@@ -0,0 +1,2 @@
+package p;
+interface B{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail23/in/A.java
new file mode 100644
index 0000000..25ac9bf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail23/in/A.java
@@ -0,0 +1,2 @@
+package p1;
+public class A{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail23/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail23/in/B.java
new file mode 100644
index 0000000..1e8902b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail23/in/B.java
@@ -0,0 +1,2 @@
+package p3;
+public class B{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail23/in/Bogus.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail23/in/Bogus.java
new file mode 100644
index 0000000..c10e59b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail23/in/Bogus.java
@@ -0,0 +1,4 @@
+package p2;
+import p1.A;
+import p3.B;
+class Bogus{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail24/in/A.java
new file mode 100644
index 0000000..25ac9bf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail24/in/A.java
@@ -0,0 +1,2 @@
+package p1;
+public class A{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail24/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail24/in/B.java
new file mode 100644
index 0000000..3945a49
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail24/in/B.java
@@ -0,0 +1,3 @@
+package p2;
+import p1.A;
+class B{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail25/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail25/in/A.java
new file mode 100644
index 0000000..25ac9bf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail25/in/A.java
@@ -0,0 +1,2 @@
+package p1;
+public class A{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail25/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail25/in/B.java
new file mode 100644
index 0000000..042c455
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail25/in/B.java
@@ -0,0 +1,3 @@
+package p2;
+import p1.A;
+interface B{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail26/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail26/in/A.java
new file mode 100644
index 0000000..61b6e6f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail26/in/A.java
@@ -0,0 +1,3 @@
+package p1;
+import p2.B;
+public class A{} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail26/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail26/in/B.java
new file mode 100644
index 0000000..8a3f9bf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail26/in/B.java
@@ -0,0 +1,2 @@
+package p2;
+public interface B{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail27/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail27/in/A.java
new file mode 100644
index 0000000..8071f64
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail27/in/A.java
@@ -0,0 +1,3 @@
+package p1;
+import p2.B;
+public class A{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail27/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail27/in/B.java
new file mode 100644
index 0000000..16d5100
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail27/in/B.java
@@ -0,0 +1,2 @@
+package p2;
+public class B{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail28/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail28/in/A.java
new file mode 100644
index 0000000..056876b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail28/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+   static int length = 17;
+   int m(){
+     int[] B = new int[1];
+     return A.length;
+   }
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail29/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail29/in/A.java
new file mode 100644
index 0000000..61d3566
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail29/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+   static int length = 17;
+   int m(int[] B){
+     return A.length;
+   }
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail3/in/A.java
new file mode 100644
index 0000000..ad40c78
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail3/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A extends C{
+}
+class B{
+}
+class C extends B{
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail30/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail30/in/A.java
new file mode 100644
index 0000000..4ab0bf3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail30/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+   static int length = 17;
+   int[] B = new int[1];
+   int m(){
+     return A.length;
+   }
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail31/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail31/in/A.java
new file mode 100644
index 0000000..4edb6e1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail31/in/A.java
@@ -0,0 +1,2 @@
+package p1;
+public class A{}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail31/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail31/in/B.java
new file mode 100644
index 0000000..c16f798
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail31/in/B.java
@@ -0,0 +1,2 @@
+package p2;
+public class B{}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail31/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail31/in/C.java
new file mode 100644
index 0000000..1b13cad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail31/in/C.java
@@ -0,0 +1,6 @@
+package p3;
+import p1.*;
+import p2.B;
+class C{
+   Object o = new A();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail32/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail32/in/A.java
new file mode 100644
index 0000000..7b5d176
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail32/in/A.java
@@ -0,0 +1,5 @@
+package p;
+import p1.*;
+public class A{
+   Object o = new B();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail32/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail32/in/B.java
new file mode 100644
index 0000000..568eb40
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail32/in/B.java
@@ -0,0 +1,2 @@
+package p1;
+public class B{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail33/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail33/in/A.java
new file mode 100644
index 0000000..cc55de5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail33/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//2 occurences
+//disallow - shadowing
+public class A {
+}
+
+class C {
+	void m() {
+		class B {
+		}
+		new A();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail34/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail34/in/A.java
new file mode 100644
index 0000000..6462581
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail34/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//2 occurences
+//disallow - obscuring
+public class A {
+	static int length= 1;
+}
+
+class C {
+	void m() {
+		int[] B= {42};
+		A.length= 0;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail35/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail35/in/A.java
new file mode 100644
index 0000000..7dad132
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail35/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//2 occurences
+//disallow - obscuring
+public class A {
+	static int length= 1;
+}
+
+class C {
+	void m(int[] B) {
+		A.length= 0;
+	}
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail36/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail36/in/A.java
new file mode 100644
index 0000000..00a75d1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail36/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//2 occurences
+//disallow - obscuring
+public class A {
+	static int length= 1;
+}
+
+class C {
+	int[] B= {4};
+	void m() {
+		A.length= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail37/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail37/in/A.java
new file mode 100644
index 0000000..71df552
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail37/in/A.java
@@ -0,0 +1,4 @@
+package p;
+public class A{
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail37/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail37/in/B.java
new file mode 100644
index 0000000..6cb383e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail37/in/B.java
@@ -0,0 +1,2 @@
+package p;
+class B{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail38/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail38/in/A.java
new file mode 100644
index 0000000..b7438c3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail38/in/A.java
@@ -0,0 +1,8 @@
+package p;
+public class A{
+	private static interface I{
+		class C{
+		native void j();
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail39/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail39/in/A.java
new file mode 100644
index 0000000..94de0d7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail39/in/A.java
@@ -0,0 +1,4 @@
+package p;
+public class A{
+	native void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail4/in/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail4/in/A.java
@@ -0,0 +1,3 @@
+package p;
+class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail4/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail4/in/B.java
new file mode 100644
index 0000000..3613892
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail4/in/B.java
@@ -0,0 +1,4 @@
+package p;
+class B extends A{
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail40/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail40/in/A.java
new file mode 100644
index 0000000..71e4836
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail40/in/A.java
@@ -0,0 +1,6 @@
+package p;
+public class A{
+	class C{
+		native void m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail41/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail41/in/A.java
new file mode 100644
index 0000000..1172b81
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail41/in/A.java
@@ -0,0 +1,10 @@
+package p;
+public class A{
+	public static int length(){ return 0;};
+}
+class F{
+	int m(){
+		String B= null;
+		return A.length();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail42/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail42/in/A.java
new file mode 100644
index 0000000..81eaf64
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail42/in/A.java
@@ -0,0 +1,9 @@
+package p;
+public class A{
+	public static int length(){ return 0;};
+}
+class F{
+	int m(String B){
+		return A.length();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail43/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail43/in/A.java
new file mode 100644
index 0000000..65fb284
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail43/in/A.java
@@ -0,0 +1,10 @@
+package p;
+public class A{
+	public static int length(){ return 0;};
+}
+class F{
+	String B;
+	int m(){
+		return A.length();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail44/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail44/in/A.java
new file mode 100644
index 0000000..f65c292
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail44/in/A.java
@@ -0,0 +1,12 @@
+package p;
+public class A{
+	public static int length(){ return 0;};
+}
+class F{
+	String B;
+}
+class FF extends F{
+	int m(){
+		return A.length();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail45/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail45/in/A.java
new file mode 100644
index 0000000..5554553
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail45/in/A.java
@@ -0,0 +1,12 @@
+package p;
+public class A{
+	public static int length(){ return 0;};
+}
+interface I{
+	String B= "fred";
+}
+class FF implements I{
+	int m(){
+		return A.length();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail46/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail46/in/A.java
new file mode 100644
index 0000000..2c0539c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail46/in/A.java
@@ -0,0 +1,10 @@
+package p;
+public class A{
+	static int MAX_VALUE = 2;
+}
+class S{
+	int m(){
+		Integer B= null;
+		return A.MAX_VALUE;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail47/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail47/in/A.java
new file mode 100644
index 0000000..a6af04d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail47/in/A.java
@@ -0,0 +1,9 @@
+package p;
+public class A{
+	static int MAX_VALUE = 2;
+}
+class S{
+	int m(Integer B){
+		return A.MAX_VALUE;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail48/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail48/in/A.java
new file mode 100644
index 0000000..730681c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail48/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+}
+class X{
+	class B{
+	}
+	A a;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail49/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail49/in/A.java
new file mode 100644
index 0000000..6e5046d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail49/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class X{
+	class B{
+	}
+	A m(){
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail5/in/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail5/in/A.java
@@ -0,0 +1,3 @@
+package p;
+class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail5/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail5/in/B.java
new file mode 100644
index 0000000..3d18e87
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail5/in/B.java
@@ -0,0 +1,4 @@
+package p;
+class B extends C{
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail5/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail5/in/C.java
new file mode 100644
index 0000000..293a290
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail5/in/C.java
@@ -0,0 +1,3 @@
+package p;
+class C extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail50/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail50/in/A.java
new file mode 100644
index 0000000..ce74207
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail50/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+}
+class X{
+	class B{
+	}
+	void m(A a){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail51/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail51/in/A.java
new file mode 100644
index 0000000..223883f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail51/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+}
+class X{
+	class B{
+	}
+	X(A a){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail52/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail52/in/A.java
new file mode 100644
index 0000000..7129fc6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail52/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A extends Exception{
+}
+class X{
+	class B extends Exception{
+	}
+	void m() throws A{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail53/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail53/in/A.java
new file mode 100644
index 0000000..917fe91
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail53/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A extends Exception{
+}
+class X{
+	class B extends Exception{
+	}
+	X() throws A{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail54/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail54/in/A.java
new file mode 100644
index 0000000..de4ae47
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail54/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class X{
+	class B{
+	}
+	void m(){
+		A a;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail55/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail55/in/A.java
new file mode 100644
index 0000000..45a7007
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail55/in/A.java
@@ -0,0 +1,15 @@
+package p;
+class A extends Exception{
+}
+class X{
+	class B extends Exception{
+	}
+	void m() throws A{
+	}
+	void k(){
+		try {
+			m();
+		} catch (A a){
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail56/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail56/in/A.java
new file mode 100644
index 0000000..927609b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail56/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A extends Exception{
+}
+class X{
+	class B extends Exception{
+	}
+	Object o= A.class;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail57/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail57/in/A.java
new file mode 100644
index 0000000..222d305
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail57/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+}
+class X{
+	class B{
+	}
+	Object o= new A();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail58/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail58/in/A.java
new file mode 100644
index 0000000..eaab62a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail58/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+}
+class X{
+	class B{
+	}
+	Object o= new A(){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail59/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail59/in/A.java
new file mode 100644
index 0000000..5b3be05
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail59/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+}
+class X{
+	class B{
+	}
+	Object o= new A[0];
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail6/in/A.java
new file mode 100644
index 0000000..07a2149
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail6/in/A.java
@@ -0,0 +1,3 @@
+package p;
+class A extends C{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail6/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail6/in/B.java
new file mode 100644
index 0000000..d110d65
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail6/in/B.java
@@ -0,0 +1,3 @@
+package p;
+class B{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail6/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail6/in/C.java
new file mode 100644
index 0000000..b2c3c43
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail6/in/C.java
@@ -0,0 +1,4 @@
+package p;
+class C extends B{
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail60/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail60/in/A.java
new file mode 100644
index 0000000..2b19f3b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail60/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class X{
+	class B{
+	}
+	Object m(Object o){
+		return (A)o;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail61/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail61/in/A.java
new file mode 100644
index 0000000..33ee468
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail61/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class X{
+	class B{
+	}
+	boolean m(Object o){
+		return o instanceof A;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail62/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail62/in/A.java
new file mode 100644
index 0000000..d6c2750
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail62/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+	static int x;
+}
+class X{
+	static class B{
+		static int x;
+	}
+	int m(Object o){
+		return A.x;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail63/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail63/in/A.java
new file mode 100644
index 0000000..78f81e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail63/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+	static int x(){return 42;};
+}
+class X{
+	static class B{
+		static int x(){return 42;};
+	}
+	int m(Object o){
+		return A.x();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail64/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail64/in/A.java
new file mode 100644
index 0000000..aca1914
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail64/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+}
+class X{
+	class B{
+	}
+	class Fred extends A{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail65/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail65/in/A.java
new file mode 100644
index 0000000..773ea1e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail65/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+}
+class X{
+	void m(){
+		class B{}
+		A a;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail66/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail66/in/A.java
new file mode 100644
index 0000000..cbd2947
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail66/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+}
+class X{
+	void m(){
+		class B{};
+		class C{
+			A m(){
+				return null;
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail67/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail67/in/A.java
new file mode 100644
index 0000000..1bd4502
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail67/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+}
+class X{
+	void m(){
+		class B{};
+		class C{
+			void m(A b){
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail68/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail68/in/A.java
new file mode 100644
index 0000000..9f6c653
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail68/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+}
+class X{
+	void m(){
+		class B{
+		};
+		class C{
+			C(A b){
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail69/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail69/in/A.java
new file mode 100644
index 0000000..4109948
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail69/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A extends Exception{
+}
+class X{
+	void m(){
+		class B extends Exception{}
+		class C{
+			void m() throws A{
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail7/in/A.java
new file mode 100644
index 0000000..dd7b3a0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail7/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+}
+class B{}
+
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail70/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail70/in/A.java
new file mode 100644
index 0000000..0f3f1b4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail70/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A extends Exception{
+}
+class X{
+	void m(){
+		class B extends Exception{}
+		class C{
+			C() throws A{
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail71/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail71/in/A.java
new file mode 100644
index 0000000..f26e1b2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail71/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A {
+}
+class X{
+	void m(){
+		class B{}
+		class C{
+			A a;
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail72/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail72/in/A.java
new file mode 100644
index 0000000..3e9e83e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail72/in/A.java
@@ -0,0 +1,19 @@
+package p;
+class A extends Exception {
+}
+class X {
+	void f() {
+		class B extends Exception {
+		};
+		class C {
+			void m() throws A {
+			}
+			void k() {
+				try {
+					m();
+				} catch (A a) {
+				}
+			}
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail73/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail73/in/A.java
new file mode 100644
index 0000000..98430b0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail73/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A {}
+class X{
+	void m(){
+		class B	{}
+		Object o= A.class;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail74/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail74/in/A.java
new file mode 100644
index 0000000..10d8bfe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail74/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+}
+class X{
+	void m(){
+		class B{}
+		Object o= new A();
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail75/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail75/in/A.java
new file mode 100644
index 0000000..f6cdea7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail75/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+}
+class X{
+	void m(){
+		class B{}
+		Object o= new A(){};
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail76/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail76/in/A.java
new file mode 100644
index 0000000..48f65c6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail76/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+}
+class X{
+	void m(){
+		class B{}
+		Object o= new A[0];
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail77/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail77/in/A.java
new file mode 100644
index 0000000..a4d5354
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail77/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+}
+class X{
+	void m(){
+		class B{}
+		class C{
+			Object m(Object o){
+				return (A)o;
+			}
+		}	
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail78/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail78/in/A.java
new file mode 100644
index 0000000..b2d42cb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail78/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+}
+class X{
+	void m(){
+		class B{	}
+		class C{
+			boolean m(Object o){
+				return o instanceof A;
+			}
+		}	
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail79/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail79/in/A.java
new file mode 100644
index 0000000..8eb9ad9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail79/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class X{
+	void m(){
+		class B{}
+		class Fred extends A{
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail8/in/A.java
new file mode 100644
index 0000000..4a3f223
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail8/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail8/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail8/in/B.java
new file mode 100644
index 0000000..d5d34df
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail8/in/B.java
@@ -0,0 +1,3 @@
+package p;
+class B{}
+ 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail80/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail80/in/A.java
new file mode 100644
index 0000000..8e56da5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail80/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void m(){
+		class B{}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail81/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail81/in/A.java
new file mode 100644
index 0000000..d2dc781
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail81/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	class C{
+		void m(){
+			class B{}
+		}
+	}	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail82/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail82/in/A.java
new file mode 100644
index 0000000..96d072c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail82/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{}
+class X{
+	class B extends A{}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail83/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail83/in/A.java
new file mode 100644
index 0000000..ffe08d4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail83/in/A.java
@@ -0,0 +1,8 @@
+//can't rename A to Cloneable
+package p;
+interface A{}
+class X{
+	void m(){
+		class C implements A, Cloneable{}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail84/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail84/in/A.java
new file mode 100644
index 0000000..236e5c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail84/in/A.java
@@ -0,0 +1,4 @@
+//can't rename A to List
+package p;
+import java.util.List;
+class A{}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail85/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail85/in/A.java
new file mode 100644
index 0000000..7e9bfb1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail85/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	class C{
+		class D{
+			native void n();
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail86/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail86/in/A.java
new file mode 100644
index 0000000..fef1289
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail86/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{}
+class C{
+	native void n(A a);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail87/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail87/in/A.java
new file mode 100644
index 0000000..9c0c81c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail87/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{}
+class C{
+	class D{
+		native void n(A a);
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail88/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail88/in/A.java
new file mode 100644
index 0000000..2c1bc51
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail88/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	void m(){
+		class C{
+			native void m();
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail89/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail89/in/A.java
new file mode 100644
index 0000000..da0e6dd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail89/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	class Inner{
+		void m(){
+			class C{
+				native void m();
+			}
+		}
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail9/in/A.java
new file mode 100644
index 0000000..8c0da8d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail9/in/A.java
@@ -0,0 +1,3 @@
+class A{
+  class B{}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail90/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail90/in/A.java
new file mode 100644
index 0000000..51cffbb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail90/in/A.java
@@ -0,0 +1,14 @@
+package p;
+public class A{
+	public static int length(){ return 0;};
+}
+class F{
+	static class B{
+		public static int length(){ return 42;};
+	};
+}
+class FF extends F{
+	int m(){
+		return A.length();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail91/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail91/in/A.java
new file mode 100644
index 0000000..a830c1a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail91/in/A.java
@@ -0,0 +1,14 @@
+package p;
+public class A{
+	public static int length(){ return 0;};
+}
+interface I{
+	static class B{
+		public static int length(){ return 0;};
+	}
+}
+class FF implements I{
+	int m(){
+		return A.length();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail92/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail92/in/A.java
new file mode 100644
index 0000000..639b145
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail92/in/A.java
@@ -0,0 +1,8 @@
+package p;
+public class A{
+	void f(){
+		class X{
+			class B{}
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail93/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail93/in/A.java
new file mode 100644
index 0000000..40039ab
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail93/in/A.java
@@ -0,0 +1,10 @@
+package p;
+public class A{
+	void f(){
+		class X{
+			class B{
+				native void m();
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail94/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail94/in/A.java
new file mode 100644
index 0000000..ff0cb15
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail94/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{}
+class B{
+	native void m(A a);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail95/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail95/in/A.java
new file mode 100644
index 0000000..ac49ce4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFail95/in/A.java
@@ -0,0 +1,18 @@
+package p;
+class A {
+	class Z {
+		void o() {
+			{
+				class F {
+					{
+						class B {
+							void hj() {
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFailRegression1GCRKMQ/in/Blinky.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFailRegression1GCRKMQ/in/Blinky.java
new file mode 100644
index 0000000..4140567
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testFailRegression1GCRKMQ/in/Blinky.java
@@ -0,0 +1,9 @@
+import java.util.*; 
+import java.io.File;
+
+public class Blinky{
+
+	public static void main(String[] args) {
+	}
+	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics1/in/A.java
new file mode 100644
index 0000000..f04cc66
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics1/in/A.java
@@ -0,0 +1,20 @@
+package p;
+class A<T> {
+    public A() {}
+    public <T>A(T t) {}
+    public <X>A(T t, X x) {}
+
+    void m(A a) {
+        new A<T>();
+        new A<T>(null);
+        new <String>A<T>(null, "y");
+    };
+}
+
+class X {
+    void x(A a) {
+        new A<Integer>();
+        new A<Integer>(null);
+        new <String>A<Integer>(new Integer(1), "x");
+    };
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics1/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics1/out/B.java
new file mode 100644
index 0000000..153281f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics1/out/B.java
@@ -0,0 +1,20 @@
+package p;
+class B<T> {
+    public B() {}
+    public <T>B(T t) {}
+    public <X>B(T t, X x) {}
+
+    void m(B a) {
+        new B<T>();
+        new B<T>(null);
+        new <String>B<T>(null, "y");
+    };
+}
+
+class X {
+    void x(B a) {
+        new B<Integer>();
+        new B<Integer>(null);
+        new <String>B<Integer>(new Integer(1), "x");
+    };
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics2/in/A.java
new file mode 100644
index 0000000..3cf9caf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics2/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A<A> {
+    A a;
+    p.A pa= new p.A();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics2/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics2/out/B.java
new file mode 100644
index 0000000..5b36bf1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics2/out/B.java
@@ -0,0 +1,5 @@
+package p;
+class B<A> {
+    A a;
+    p.B pa= new p.B();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics3/in/A.java
new file mode 100644
index 0000000..6bcf767
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics3/in/A.java
@@ -0,0 +1,20 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+
+class A {
+    ArrayList<? super A> fSink;
+}
+
+class U extends ArrayList<A> {
+    public boolean add(A arg0) {
+        return false;
+    }
+}
+
+class V<Q extends A> implements Comparator<Q> {
+    public int compare(Q arg0, Q arg1) {
+        return 0;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics3/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics3/out/B.java
new file mode 100644
index 0000000..e93d6df
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics3/out/B.java
@@ -0,0 +1,20 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+
+class B {
+    ArrayList<? super B> fSink;
+}
+
+class U extends ArrayList<B> {
+    public boolean add(B arg0) {
+        return false;
+    }
+}
+
+class V<Q extends B> implements Comparator<Q> {
+    public int compare(Q arg0, Q arg1) {
+        return 0;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics4/in/A.java
new file mode 100644
index 0000000..388c2a1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics4/in/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.ArrayList;
+
+class A {
+    Class<? extends A> class1= A.this.getClass();
+    Class<? extends A> class2= A.class;
+    Class<A> class3= (Class<A>) A.this.getClass();
+    X<A> getX() {
+        X<A> x= new X<A>();
+        x.t= new ArrayList<A>().toArray(new A[0]);
+        return x;
+    }
+}
+
+class X<T extends A> {
+    T[] t;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics4/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics4/out/B.java
new file mode 100644
index 0000000..71e24bb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testGenerics4/out/B.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.ArrayList;
+
+class B {
+    Class<? extends B> class1= B.this.getClass();
+    Class<? extends B> class2= B.class;
+    Class<B> class3= (Class<B>) B.this.getClass();
+    X<B> getX() {
+        X<B> x= new X<B>();
+        x.t= new ArrayList<B>().toArray(new B[0]);
+        return x;
+    }
+}
+
+class X<T extends B> {
+    T[] t;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalInnerClass/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalInnerClass/in/A.java
new file mode 100644
index 0000000..b376073
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalInnerClass/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class B{
+  class A{}
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName1/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName1/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName2/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName2/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName3/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName3/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName4/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName4/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName5/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName5/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName6/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName6/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName7/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName7/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName8/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName8/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName9/in/A.java
new file mode 100644
index 0000000..2ffd296
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testIllegalTypeName9/in/A.java
@@ -0,0 +1,3 @@
+package p;
+class A {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testNoOp/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testNoOp/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testNoOp/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/in/A.java
new file mode 100644
index 0000000..23fae3e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/in/A.java
@@ -0,0 +1,4 @@
+package p;
+
+class A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/in/build.xml b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/in/build.xml
new file mode 100644
index 0000000..20d736e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/in/build.xml
@@ -0,0 +1 @@
+p.A
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/out/B.java
new file mode 100644
index 0000000..4059e22
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/out/B.java
@@ -0,0 +1,4 @@
+package p;
+
+class B {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/out/build.xml b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/out/build.xml
new file mode 100644
index 0000000..efbc725
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName1/out/build.xml
@@ -0,0 +1 @@
+p.B
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/in/Transient.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/in/Transient.java
new file mode 100644
index 0000000..a9fd86f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/in/Transient.java
@@ -0,0 +1,12 @@
+package p;
+
+/**
+ * Transient and TransientProperty
+ * @see Transient
+ * @see TransientProperty
+ */
+public class Transient {
+}
+
+class TransientProperty {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/in/mapping.hbm.xml b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/in/mapping.hbm.xml
new file mode 100644
index 0000000..c085d2c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/in/mapping.hbm.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hibernate-mapping auto-import="true">
+    <class name="p.Transient" schema="SMTH" table="SMTH"/>
+    <class name="p.Transient.class" schema="SMTH" table="SMTH"/>
+    <class name=" p.Transient" schema="SMTH" table="SMTH"/>
+    <class name="p.Transient " schema="SMTH" table="SMTH"/>
+    <class name="p.Transient(class)" schema="SMTH" table="SMTH"/>
+    
+    <class name="p.TransientProperty" schema="SMTH" table="SMTH"/>
+    <class name=".p.Transient" schema="SMTH" table="SMTH"/>
+    <class name="a.p.Transient" schema="SMTH" table="SMTH"/>
+    <class name="pp.Transient" schema="SMTH" table="SMTH"/>
+</hibernate-mapping>
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/out/TransientEquipment.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/out/TransientEquipment.java
new file mode 100644
index 0000000..68c20ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/out/TransientEquipment.java
@@ -0,0 +1,12 @@
+package p;
+
+/**
+ * Transient and TransientProperty
+ * @see TransientEquipment
+ * @see TransientProperty
+ */
+public class TransientEquipment {
+}
+
+class TransientProperty {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/out/mapping.hbm.xml b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/out/mapping.hbm.xml
new file mode 100644
index 0000000..13cddf0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testQualifiedName2/out/mapping.hbm.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hibernate-mapping auto-import="true">
+    <class name="p.TransientEquipment" schema="SMTH" table="SMTH"/>
+    <class name="p.TransientEquipment.class" schema="SMTH" table="SMTH"/>
+    <class name=" p.TransientEquipment" schema="SMTH" table="SMTH"/>
+    <class name="p.TransientEquipment " schema="SMTH" table="SMTH"/>
+    <class name="p.TransientEquipment(class)" schema="SMTH" table="SMTH"/>
+    
+    <class name="p.TransientProperty" schema="SMTH" table="SMTH"/>
+    <class name=".p.Transient" schema="SMTH" table="SMTH"/>
+    <class name="a.p.Transient" schema="SMTH" table="SMTH"/>
+    <class name="pp.Transient" schema="SMTH" table="SMTH"/>
+</hibernate-mapping>
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements00/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements00/in/SomeClass.java
new file mode 100644
index 0000000..3d20f7f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements00/in/SomeClass.java
@@ -0,0 +1,20 @@
+package p;
+
+public class SomeClass {
+
+	SomeClass someClass;
+
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return someClass;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeClass(SomeClass a) {
+		this.someClass = a;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements00/out/SomeClass2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements00/out/SomeClass2.java
new file mode 100644
index 0000000..04ee0eb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements00/out/SomeClass2.java
@@ -0,0 +1,20 @@
+package p;
+
+public class SomeClass2 {
+
+	SomeClass2 someClass2;
+
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass2 getSomeClass2() {
+		return someClass2;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeClass2(SomeClass2 a) {
+		this.someClass2 = a;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements01/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements01/in/SomeClass.java
new file mode 100644
index 0000000..6a79a61
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements01/in/SomeClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeClass {
+
+	SomeClass someClass;
+	SomeClass someClass2;
+
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return someClass;
+	}
+
+	/**
+	 * @param someClass The someClass to set.
+	 */
+	public void setSomeClass(SomeClass someClass) {
+		this.someClass = someClass;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements02/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements02/in/SomeClass.java
new file mode 100644
index 0000000..b5989e4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements02/in/SomeClass.java
@@ -0,0 +1,24 @@
+package p;
+
+public class SomeClass {
+
+	SomeClass someClass;
+
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return someClass;
+	}
+
+	/**
+	 * @param someClass The someClass to set.
+	 */
+	public void setSomeClass(SomeClass someClass) {
+		this.someClass = someClass;
+	}
+	
+	public void setSomeDifferentClass(SomeClass someClass) {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements03/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements03/in/SomeClass.java
new file mode 100644
index 0000000..19635b5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements03/in/SomeClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeClass {
+
+	SomeClass someClass;
+	
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return someClass;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeClass(SomeClass a) {
+		this.someClass = a;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements03/out/SomeClass2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements03/out/SomeClass2.java
new file mode 100644
index 0000000..c4dbbc2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements03/out/SomeClass2.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeClass2 {
+
+	SomeClass2 someClass2;
+	
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass2 getSomeClass2() {
+		return someClass2;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeClass2(SomeClass2 a) {
+		this.someClass2 = a;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/in/SomeClass.java
new file mode 100644
index 0000000..19635b5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/in/SomeClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeClass {
+
+	SomeClass someClass;
+	
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return someClass;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeClass(SomeClass a) {
+		this.someClass = a;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/in/SomeOtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/in/SomeOtherClass.java
new file mode 100644
index 0000000..4e9f797
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/in/SomeOtherClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeOtherClass {
+	
+	SomeClass someClass;
+
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return someClass;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeClass(SomeClass a) {
+		this.someClass = a;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/out/SomeClass2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/out/SomeClass2.java
new file mode 100644
index 0000000..c4dbbc2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/out/SomeClass2.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeClass2 {
+
+	SomeClass2 someClass2;
+	
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass2 getSomeClass2() {
+		return someClass2;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeClass2(SomeClass2 a) {
+		this.someClass2 = a;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/out/SomeOtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/out/SomeOtherClass.java
new file mode 100644
index 0000000..72f4ad1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements04/out/SomeOtherClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeOtherClass {
+	
+	SomeClass2 someClass2;
+
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass2 getSomeClass2() {
+		return someClass2;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeClass2(SomeClass2 a) {
+		this.someClass2 = a;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/in/SomeClass.java
new file mode 100644
index 0000000..9c17eb8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/in/SomeClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeClass {
+
+	SomeClass someClass;
+	
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return someClass;
+	}
+
+	/**
+	 * @param someClass The someClass to set.
+	 */
+	public void setSomeClass(SomeClass someClass) {
+		this.someClass = someClass;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/in/test.html b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/in/test.html
new file mode 100644
index 0000000..770fd66
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/in/test.html
@@ -0,0 +1 @@
+Waiting for p.SomeClass to come home
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/out/SomeDifferentClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/out/SomeDifferentClass.java
new file mode 100644
index 0000000..93136b6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/out/SomeDifferentClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeDifferentClass {
+
+	SomeDifferentClass someDifferentClass;
+	
+	/**
+	 * @return Returns the someDifferentClass.
+	 */
+	public SomeDifferentClass getSomeDifferentClass() {
+		return someDifferentClass;
+	}
+
+	/**
+	 * @param someDifferentClass The someDifferentClass to set.
+	 */
+	public void setSomeDifferentClass(SomeDifferentClass someDifferentClass) {
+		this.someDifferentClass = someDifferentClass;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/out/test.html b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/out/test.html
new file mode 100644
index 0000000..ff452db
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements05/out/test.html
@@ -0,0 +1 @@
+Waiting for p.SomeDifferentClass to come home
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/in/SomeClass.java
new file mode 100644
index 0000000..9c17eb8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/in/SomeClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeClass {
+
+	SomeClass someClass;
+	
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return someClass;
+	}
+
+	/**
+	 * @param someClass The someClass to set.
+	 */
+	public void setSomeClass(SomeClass someClass) {
+		this.someClass = someClass;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/in/SomeNearlyIdenticalClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/in/SomeNearlyIdenticalClass.java
new file mode 100644
index 0000000..c45b8b2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/in/SomeNearlyIdenticalClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeNearlyIdenticalClass {
+
+	SomeClass someClass;
+	
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return someClass;
+	}
+
+	/**
+	 * @param someClass The someClass to set.
+	 */
+	public void setSomeClass(SomeClass someClass) {
+		this.someClass = someClass;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/out/SomeNearlyIdenticalClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/out/SomeNearlyIdenticalClass.java
new file mode 100644
index 0000000..a5debdf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/out/SomeNearlyIdenticalClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeNearlyIdenticalClass {
+
+	SomeOtherClass someOtherClass;
+	
+	/**
+	 * @return Returns the someOtherClass.
+	 */
+	public SomeOtherClass getSomeOtherClass() {
+		return someOtherClass;
+	}
+
+	/**
+	 * @param someOtherClass The someOtherClass to set.
+	 */
+	public void setSomeOtherClass(SomeOtherClass someOtherClass) {
+		this.someOtherClass = someOtherClass;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/out/SomeOtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/out/SomeOtherClass.java
new file mode 100644
index 0000000..9a24498
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements06/out/SomeOtherClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeOtherClass {
+
+	SomeOtherClass someOtherClass;
+	
+	/**
+	 * @return Returns the someOtherClass.
+	 */
+	public SomeOtherClass getSomeOtherClass() {
+		return someOtherClass;
+	}
+
+	/**
+	 * @param someOtherClass The someOtherClass to set.
+	 */
+	public void setSomeOtherClass(SomeOtherClass someOtherClass) {
+		this.someOtherClass = someOtherClass;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements07/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements07/in/SomeClass.java
new file mode 100644
index 0000000..78e23d7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements07/in/SomeClass.java
@@ -0,0 +1,36 @@
+package p;
+
+public class SomeClass {
+	
+	SomeClass someClass;
+	SomeClass fSomeClass;
+	SomeClass someClassSuf1;
+	SomeClass fSomeClassSuf1;
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return fSomeClass;
+	}
+	/**
+	 * @param someClass The someClass to set.
+	 */
+	public void setSomeClass(SomeClass someClass) {
+		fSomeClass = someClass;
+	}
+	/**
+	 * @return Returns the someClassSuf1.
+	 */
+	public SomeClass getSomeClassSuf1() {
+		return fSomeClassSuf1;
+	}
+	/**
+	 * @param someClassSuf1 The someClassSuf1 to set.
+	 */
+	public void setSomeClassSuf1(SomeClass someClassSuf1) {
+		fSomeClassSuf1 = someClassSuf1;
+	}
+
+
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements07/out/SomeDiffClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements07/out/SomeDiffClass.java
new file mode 100644
index 0000000..b49b1dd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements07/out/SomeDiffClass.java
@@ -0,0 +1,36 @@
+package p;
+
+public class SomeDiffClass {
+	
+	SomeDiffClass someDiffClass;
+	SomeDiffClass fSomeDiffClass;
+	SomeDiffClass someDiffClassSuf1;
+	SomeDiffClass fSomeDiffClassSuf1;
+	/**
+	 * @return Returns the someDiffClass.
+	 */
+	public SomeDiffClass getSomeDiffClass() {
+		return fSomeDiffClass;
+	}
+	/**
+	 * @param someDiffClass The someDiffClass to set.
+	 */
+	public void setSomeDiffClass(SomeDiffClass someDiffClass) {
+		fSomeDiffClass = someDiffClass;
+	}
+	/**
+	 * @return Returns the someDiffClassSuf1.
+	 */
+	public SomeDiffClass getSomeDiffClassSuf1() {
+		return fSomeDiffClassSuf1;
+	}
+	/**
+	 * @param someDiffClassSuf1 The someDiffClassSuf1 to set.
+	 */
+	public void setSomeDiffClassSuf1(SomeDiffClass someDiffClassSuf1) {
+		fSomeDiffClassSuf1 = someDiffClassSuf1;
+	}
+
+
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements08/in/ISomeIf.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements08/in/ISomeIf.java
new file mode 100644
index 0000000..174cd69
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements08/in/ISomeIf.java
@@ -0,0 +1,34 @@
+package p;
+
+public interface ISomeIf {
+	
+	class X {
+		ISomeIf fSomeIf;
+		ISomeIf fISomeIf;
+		/**
+		 * @return Returns the iSomeIf.
+		 */
+		public ISomeIf getISomeIf() {
+			return fISomeIf;
+		}
+		/**
+		 * @param a The a to set.
+		 */
+		public void setISomeIf(ISomeIf a) {
+			fISomeIf = a;
+		}
+		/**
+		 * @return Returns the someIf.
+		 */
+		public ISomeIf getSomeIf() {
+			return fSomeIf;
+		}
+		/**
+		 * @param a The a to set.
+		 */
+		public void setSomeIf(ISomeIf a) {
+			fSomeIf = a;
+		}
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements08/out/ISomeIf2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements08/out/ISomeIf2.java
new file mode 100644
index 0000000..1e606fb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements08/out/ISomeIf2.java
@@ -0,0 +1,34 @@
+package p;
+
+public interface ISomeIf2 {
+	
+	class X {
+		ISomeIf2 fSomeIf2;
+		ISomeIf2 fISomeIf2;
+		/**
+		 * @return Returns the iSomeIf.
+		 */
+		public ISomeIf2 getISomeIf2() {
+			return fISomeIf2;
+		}
+		/**
+		 * @param a The a to set.
+		 */
+		public void setISomeIf2(ISomeIf2 a) {
+			fISomeIf2 = a;
+		}
+		/**
+		 * @return Returns the someIf.
+		 */
+		public ISomeIf2 getSomeIf2() {
+			return fSomeIf2;
+		}
+		/**
+		 * @param a The a to set.
+		 */
+		public void setSomeIf2(ISomeIf2 a) {
+			fSomeIf2 = a;
+		}
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/in/SomeClass.java
new file mode 100644
index 0000000..3711fb1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/in/SomeClass.java
@@ -0,0 +1,29 @@
+package p;
+public class SomeClass{
+	
+	SomeInnerClass someInnerClass;
+
+	/**
+	 * 
+	 * This is p.SomeClass.SomeInnerClass.
+	 * 
+	 */
+	class SomeInnerClass {
+		
+	}
+
+	/**
+	 * @return Returns the someInnerClass.
+	 */
+	public SomeInnerClass getSomeInnerClass() {
+		return someInnerClass;
+	}
+
+	/**
+	 * @param someInnerClass The someInnerClass to set.
+	 */
+	public void setSomeInnerClass(SomeInnerClass someInnerClass) {
+		this.someInnerClass = someInnerClass;
+	}
+	
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/in/SomeOtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/in/SomeOtherClass.java
new file mode 100644
index 0000000..53306f7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/in/SomeOtherClass.java
@@ -0,0 +1,7 @@
+package p;
+
+public class SomeOtherClass {
+	
+	SomeClass.SomeInnerClass fSomeInnerClass;
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/out/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/out/SomeClass.java
new file mode 100644
index 0000000..72fffa7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/out/SomeClass.java
@@ -0,0 +1,29 @@
+package p;
+public class SomeClass{
+	
+	SomeNewInnerClass someNewInnerClass;
+
+	/**
+	 * 
+	 * This is p.SomeClass.SomeNewInnerClass.
+	 * 
+	 */
+	class SomeNewInnerClass {
+		
+	}
+
+	/**
+	 * @return Returns the someNewInnerClass.
+	 */
+	public SomeNewInnerClass getSomeNewInnerClass() {
+		return someNewInnerClass;
+	}
+
+	/**
+	 * @param someNewInnerClass The someNewInnerClass to set.
+	 */
+	public void setSomeNewInnerClass(SomeNewInnerClass someNewInnerClass) {
+		this.someNewInnerClass = someNewInnerClass;
+	}
+	
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/out/SomeOtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/out/SomeOtherClass.java
new file mode 100644
index 0000000..0caec12
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements09/out/SomeOtherClass.java
@@ -0,0 +1,7 @@
+package p;
+
+public class SomeOtherClass {
+	
+	SomeClass.SomeNewInnerClass fSomeNewInnerClass;
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/in/SomeClass.java
new file mode 100644
index 0000000..d91d842
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/in/SomeClass.java
@@ -0,0 +1,9 @@
+package p;
+public class SomeClass{
+	
+	static SomeClass someClass;
+	static SomeClass fsSomeClass;
+	static SomeClass fsSomeClass_suffix;
+	static SomeClass someClass_suffix;
+	
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/in/SomeOtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/in/SomeOtherClass.java
new file mode 100644
index 0000000..c48617e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/in/SomeOtherClass.java
@@ -0,0 +1,10 @@
+package p;
+
+public class SomeOtherClass {
+	
+	{
+		SomeClass.someClass= null;
+		SomeClass.fsSomeClass_suffix= null;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/out/SomeClass2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/out/SomeClass2.java
new file mode 100644
index 0000000..c6124e7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/out/SomeClass2.java
@@ -0,0 +1,9 @@
+package p;
+public class SomeClass2{
+	
+	static SomeClass2 someClass2;
+	static SomeClass2 fsSomeClass2;
+	static SomeClass2 fsSomeClass2_suffix;
+	static SomeClass2 someClass2_suffix;
+	
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/out/SomeOtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/out/SomeOtherClass.java
new file mode 100644
index 0000000..e54fef8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements10/out/SomeOtherClass.java
@@ -0,0 +1,10 @@
+package p;
+
+public class SomeOtherClass {
+	
+	{
+		SomeClass2.someClass2= null;
+		SomeClass2.fsSomeClass2_suffix= null;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/in/SomeClass.java
new file mode 100644
index 0000000..47351eb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/in/SomeClass.java
@@ -0,0 +1,22 @@
+package p;
+public class SomeClass{
+	
+	SomeClass someClass;
+	static SomeClass fsSomeClass;
+
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return someClass;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeClass(SomeClass a) {
+		this.someClass = a;
+	}
+
+	
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/in/SomeOtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/in/SomeOtherClass.java
new file mode 100644
index 0000000..9671846
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/in/SomeOtherClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeOtherClass {
+
+	SomeClass fSomeClass;
+
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeClass getSomeClass() {
+		return fSomeClass;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeClass(SomeClass a) {
+		fSomeClass = a;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/out/SomeNewClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/out/SomeNewClass.java
new file mode 100644
index 0000000..ec7cc1e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/out/SomeNewClass.java
@@ -0,0 +1,22 @@
+package p;
+public class SomeNewClass{
+	
+	SomeNewClass someNewClass;
+	static SomeNewClass fsSomeNewClass;
+
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeNewClass getSomeNewClass() {
+		return someNewClass;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeNewClass(SomeNewClass a) {
+		this.someNewClass = a;
+	}
+
+	
+};
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/out/SomeOtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/out/SomeOtherClass.java
new file mode 100644
index 0000000..9c0c454
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements11/out/SomeOtherClass.java
@@ -0,0 +1,21 @@
+package p;
+
+public class SomeOtherClass {
+
+	SomeNewClass fSomeNewClass;
+
+	/**
+	 * @return Returns the someClass.
+	 */
+	public SomeNewClass getSomeNewClass() {
+		return fSomeNewClass;
+	}
+
+	/**
+	 * @param a The a to set.
+	 */
+	public void setSomeNewClass(SomeNewClass a) {
+		fSomeNewClass = a;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements12/in/SomeFieldClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements12/in/SomeFieldClass.java
new file mode 100644
index 0000000..a51366c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements12/in/SomeFieldClass.java
@@ -0,0 +1,19 @@
+package p;
+
+public class SomeFieldClass {
+	
+	SomeFieldClass someFieldClass;
+	
+	void foo() {
+		SomeFieldClass someLocal= someFieldClass;
+		
+		foo2(someFieldClass);
+			
+	}
+
+	private void foo2(SomeFieldClass x) {
+		// TODO Auto-generated method stub
+		
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements12/out/SomeOtherFieldClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements12/out/SomeOtherFieldClass.java
new file mode 100644
index 0000000..aa546c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements12/out/SomeOtherFieldClass.java
@@ -0,0 +1,19 @@
+package p;
+
+public class SomeOtherFieldClass {
+	
+	SomeOtherFieldClass someOtherFieldClass;
+	
+	void foo() {
+		SomeOtherFieldClass someLocal= someOtherFieldClass;
+		
+		foo2(someOtherFieldClass);
+			
+	}
+
+	private void foo2(SomeOtherFieldClass x) {
+		// TODO Auto-generated method stub
+		
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements13/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements13/in/SomeClass.java
new file mode 100644
index 0000000..fe6da17
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements13/in/SomeClass.java
@@ -0,0 +1,23 @@
+package p;
+
+/**
+ * Local variables: Prefix "pm", Suffix "_pm"
+ * Parameters: Prefix "lv", Suffix "_lv"
+ *
+ */
+public class SomeClass {
+	
+	public void foo1(SomeClass pmSomeClass) {
+		SomeClass lvSomeClass;
+		SomeClass lvSomeClass_lv;
+		SomeClass someClass_lv;
+		SomeClass pmSomeClass_pm; // wrong prefixes, but rename anyway.
+	}
+	
+	public void foo2(SomeClass pmSomeClass_pm) {
+	}
+	
+	public void foo3(SomeClass someClass_pm) {
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements13/out/SomeOtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements13/out/SomeOtherClass.java
new file mode 100644
index 0000000..a863bd1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements13/out/SomeOtherClass.java
@@ -0,0 +1,23 @@
+package p;
+
+/**
+ * Local variables: Prefix "pm", Suffix "_pm"
+ * Parameters: Prefix "lv", Suffix "_lv"
+ *
+ */
+public class SomeOtherClass {
+	
+	public void foo1(SomeOtherClass pmSomeOtherClass) {
+		SomeOtherClass lvSomeOtherClass;
+		SomeOtherClass lvSomeOtherClass_lv;
+		SomeOtherClass someOtherClass_lv;
+		SomeOtherClass pmSomeOtherClass_pm; // wrong prefixes, but rename anyway.
+	}
+	
+	public void foo2(SomeOtherClass pmSomeOtherClass_pm) {
+	}
+	
+	public void foo3(SomeOtherClass someOtherClass_pm) {
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements14/in/SomeClass2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements14/in/SomeClass2.java
new file mode 100644
index 0000000..a57c13b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements14/in/SomeClass2.java
@@ -0,0 +1,12 @@
+package p;
+
+public class SomeClass2 {
+	
+	public void foo3() {
+		
+		for (SomeClass2 someClass2; ;) {
+			
+		}
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements14/out/SomeOtherClass2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements14/out/SomeOtherClass2.java
new file mode 100644
index 0000000..612ae11
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements14/out/SomeOtherClass2.java
@@ -0,0 +1,12 @@
+package p;
+
+public class SomeOtherClass2 {
+	
+	public void foo3() {
+		
+		for (SomeOtherClass2 someOtherClass2; ;) {
+			
+		}
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements15/in/SomeClass3.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements15/in/SomeClass3.java
new file mode 100644
index 0000000..eec7fa9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements15/in/SomeClass3.java
@@ -0,0 +1,14 @@
+package p;
+
+public class SomeClass3 extends Exception {
+	
+	public void foo3() {
+		
+		try {
+			throw new SomeClass3();
+		} catch (SomeClass3 lvSomeClass3) {
+			
+		}
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements15/out/SomeOtherClass3.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements15/out/SomeOtherClass3.java
new file mode 100644
index 0000000..899533f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements15/out/SomeOtherClass3.java
@@ -0,0 +1,14 @@
+package p;
+
+public class SomeOtherClass3 extends Exception {
+	
+	public void foo3() {
+		
+		try {
+			throw new SomeOtherClass3();
+		} catch (SomeOtherClass3 lvSomeOtherClass3) {
+			
+		}
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements16/in/SomeClass4.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements16/in/SomeClass4.java
new file mode 100644
index 0000000..f681b50
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements16/in/SomeClass4.java
@@ -0,0 +1,15 @@
+package p;
+
+public class SomeClass4 {
+	
+	public void foo() {
+		SomeClass4 someClass4= null;
+		SomeClass4 someOtherVariableClass4= someClass4;
+		
+		foo2(someClass4);
+	}
+
+	private void foo2(SomeClass4 pmSomeClass4_pm) {
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements16/out/SomeOtherClass4.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements16/out/SomeOtherClass4.java
new file mode 100644
index 0000000..35aa074
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements16/out/SomeOtherClass4.java
@@ -0,0 +1,15 @@
+package p;
+
+public class SomeOtherClass4 {
+	
+	public void foo() {
+		SomeOtherClass4 someOtherClass4= null;
+		SomeOtherClass4 someOtherVariableClass4= someOtherClass4;
+		
+		foo2(someOtherClass4);
+	}
+
+	private void foo2(SomeOtherClass4 pmSomeOtherClass4_pm) {
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements17/in/SomeClass6.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements17/in/SomeClass6.java
new file mode 100644
index 0000000..ab38b3f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements17/in/SomeClass6.java
@@ -0,0 +1,10 @@
+package p;
+
+public class SomeClass6 {
+	
+	public void foo() {
+		SomeClass6 lvSomeClass6_lv;
+		SomeClass6 lvSomeOtherClass6_lv;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements18/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements18/in/SomeClass.java
new file mode 100644
index 0000000..a3b2a16
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements18/in/SomeClass.java
@@ -0,0 +1,9 @@
+package p;
+
+public class SomeClass {
+
+	public static SomeClass createSomeClass() {
+		return null;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements18/out/SomeOtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements18/out/SomeOtherClass.java
new file mode 100644
index 0000000..73c793e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements18/out/SomeOtherClass.java
@@ -0,0 +1,9 @@
+package p;
+
+public class SomeOtherClass {
+
+	public static SomeOtherClass createSomeOtherClass() {
+		return null;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements19/in/ThreeHunkClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements19/in/ThreeHunkClass.java
new file mode 100644
index 0000000..884046e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements19/in/ThreeHunkClass.java
@@ -0,0 +1,13 @@
+package p;
+
+public class ThreeHunkClass {
+
+	public static ThreeHunkClass createThreeHunkClass() {
+		return null;
+	}
+	
+	public static ThreeHunkClass createHunkClass() {
+		return null;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/in/OtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/in/OtherClass.java
new file mode 100644
index 0000000..80eb10b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/in/OtherClass.java
@@ -0,0 +1,9 @@
+package p;
+
+public class OtherClass {
+
+	public OverriddenMethodClass getOverriddenMethodClass() {
+		return null;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/in/OverriddenMethodClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/in/OverriddenMethodClass.java
new file mode 100644
index 0000000..eea510d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/in/OverriddenMethodClass.java
@@ -0,0 +1,9 @@
+package p;
+
+public class OverriddenMethodClass extends OtherClass {
+	
+	public OverriddenMethodClass getOverriddenMethodClass() {
+		return null;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/out/OtherClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/out/OtherClass.java
new file mode 100644
index 0000000..7405b82
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/out/OtherClass.java
@@ -0,0 +1,9 @@
+package p;
+
+public class OtherClass {
+
+	public ThirdClass getThirdClass() {
+		return null;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/out/ThirdClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/out/ThirdClass.java
new file mode 100644
index 0000000..33ed2bf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements20/out/ThirdClass.java
@@ -0,0 +1,9 @@
+package p;
+
+public class ThirdClass extends OtherClass {
+	
+	public ThirdClass getThirdClass() {
+		return null;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/in/SomeClass.java
new file mode 100644
index 0000000..c5932d6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/in/SomeClass.java
@@ -0,0 +1,11 @@
+package p;
+
+public class SomeClass {
+	
+	SomeClass someClass;
+	
+	public SomeClass() {
+		
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/in/SomeClassSecond.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/in/SomeClassSecond.java
new file mode 100644
index 0000000..68f426a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/in/SomeClassSecond.java
@@ -0,0 +1,11 @@
+package p;
+
+public class SomeClassSecond {
+	
+	private SomeClass someClassSecond;
+	
+	public SomeClassSecond() {
+		
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/out/SomeClassSecond.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/out/SomeClassSecond.java
new file mode 100644
index 0000000..dc8b4b0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/out/SomeClassSecond.java
@@ -0,0 +1,11 @@
+package p;
+
+public class SomeClassSecond {
+	
+	private SomeNewClass someNewClassSecond;
+	
+	public SomeClassSecond() {
+		
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/out/SomeNewClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/out/SomeNewClass.java
new file mode 100644
index 0000000..ba1ec88
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements21/out/SomeNewClass.java
@@ -0,0 +1,11 @@
+package p;
+
+public class SomeNewClass {
+	
+	SomeNewClass someNewClass;
+	
+	public SomeNewClass() {
+		
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements22/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements22/in/SomeClass.java
new file mode 100644
index 0000000..69ed241
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements22/in/SomeClass.java
@@ -0,0 +1,12 @@
+package p;
+
+public class SomeClass {
+	
+	{
+		class InInitializer {
+
+			SomeClass someClassInInitializer;
+		}
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements22/out/SomeNewClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements22/out/SomeNewClass.java
new file mode 100644
index 0000000..3997bd5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements22/out/SomeNewClass.java
@@ -0,0 +1,12 @@
+package p;
+
+public class SomeNewClass {
+	
+	{
+		class InInitializer {
+
+			SomeNewClass someNewClassInInitializer;
+		}
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements23/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements23/in/SomeClass.java
new file mode 100644
index 0000000..b0ee986
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements23/in/SomeClass.java
@@ -0,0 +1,15 @@
+package p;
+
+public class SomeClass {
+	
+	SomeClass anotherSomeClass= new SomeClass() {
+		
+		private void foo() {
+			
+			class X {
+				SomeClass someClassInInner;
+			}
+		}
+	};
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements23/out/SomeNewClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements23/out/SomeNewClass.java
new file mode 100644
index 0000000..01f288e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements23/out/SomeNewClass.java
@@ -0,0 +1,15 @@
+package p;
+
+public class SomeNewClass {
+	
+	SomeNewClass anotherSomeNewClass= new SomeNewClass() {
+		
+		private void foo() {
+			
+			class X {
+				SomeNewClass someNewClassInInner;
+			}
+		}
+	};
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements24/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements24/in/SomeClass.java
new file mode 100644
index 0000000..5a88979
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements24/in/SomeClass.java
@@ -0,0 +1,5 @@
+package p;
+
+public class SomeClass {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements24/out/SomeNewClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements24/out/SomeNewClass.java
new file mode 100644
index 0000000..8838cfa
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements24/out/SomeNewClass.java
@@ -0,0 +1,5 @@
+package p;
+
+public class SomeNewClass {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements25/in/ScrewUp.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements25/in/ScrewUp.java
new file mode 100644
index 0000000..22ccd47
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements25/in/ScrewUp.java
@@ -0,0 +1,7 @@
+package p;
+
+public class ScrewUp {
+	
+	ScrewUp screwUp, screwUp2;
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements25/out/ScrewDown.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements25/out/ScrewDown.java
new file mode 100644
index 0000000..5869e2a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements25/out/ScrewDown.java
@@ -0,0 +1,7 @@
+package p;
+
+public class ScrewDown {
+	
+	ScrewDown screwDown, screwDown2;
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements26/in/ScrewUp.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements26/in/ScrewUp.java
new file mode 100644
index 0000000..5b1777a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements26/in/ScrewUp.java
@@ -0,0 +1,9 @@
+package p;
+
+public class ScrewUp {
+
+	void foo() {
+		ScrewUp screwUp, screwUp2;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements26/out/ScrewDown.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements26/out/ScrewDown.java
new file mode 100644
index 0000000..fb11650
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements26/out/ScrewDown.java
@@ -0,0 +1,9 @@
+package p;
+
+public class ScrewDown {
+
+	void foo() {
+		ScrewDown screwDown, screwDown2;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements27/in/ScrewUp.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements27/in/ScrewUp.java
new file mode 100644
index 0000000..6090b6e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements27/in/ScrewUp.java
@@ -0,0 +1,9 @@
+package p;
+
+class ScrewUp { // rename to ScrewDown
+    private static String GREETING= "Hello";
+    
+    void screwUp() {
+        System.out.println(ScrewUp.GREETING);
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements27/out/ScrewDown.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements27/out/ScrewDown.java
new file mode 100644
index 0000000..0f087da
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements27/out/ScrewDown.java
@@ -0,0 +1,9 @@
+package p;
+
+class ScrewDown { // rename to ScrewDown
+    private static String GREETING= "Hello";
+    
+    void screwUp() {
+        System.out.println(ScrewDown.GREETING);
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements28/in/ScrewUp.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements28/in/ScrewUp.java
new file mode 100644
index 0000000..a1b9aab
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements28/in/ScrewUp.java
@@ -0,0 +1,9 @@
+package p;
+
+class ScrewUp { // rename to ScrewDown
+    private static String GREETING= "Hello";
+    
+    void foo() {
+        String screwUp= ScrewUp.GREETING;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements28/out/ScrewDown.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements28/out/ScrewDown.java
new file mode 100644
index 0000000..6c6a911
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements28/out/ScrewDown.java
@@ -0,0 +1,9 @@
+package p;
+
+class ScrewDown { // rename to ScrewDown
+    private static String GREETING= "Hello";
+    
+    void foo() {
+        String screwUp= ScrewDown.GREETING;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements29/in/ScrewUp.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements29/in/ScrewUp.java
new file mode 100644
index 0000000..a3af9eb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements29/in/ScrewUp.java
@@ -0,0 +1,7 @@
+package p;
+
+class ScrewUp { // rename to ScrewDown
+    private static String GREETING= "Hello";
+
+    String screwUp= ScrewUp.GREETING;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements29/out/ScrewDown.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements29/out/ScrewDown.java
new file mode 100644
index 0000000..84ebcd3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements29/out/ScrewDown.java
@@ -0,0 +1,7 @@
+package p;
+
+class ScrewDown { // rename to ScrewDown
+    private static String GREETING= "Hello";
+
+    String screwUp= ScrewDown.GREETING;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements30/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements30/in/SomeClass.java
new file mode 100644
index 0000000..870269d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements30/in/SomeClass.java
@@ -0,0 +1,8 @@
+package p;
+public class SomeClass {
+
+	{
+		SomeClass someClass;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements30/out/SomeNewClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements30/out/SomeNewClass.java
new file mode 100644
index 0000000..9e03d8e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements30/out/SomeNewClass.java
@@ -0,0 +1,8 @@
+package p;
+public class SomeNewClass {
+
+	{
+		SomeNewClass someNewClass;
+	}
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements31/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements31/in/SomeClass.java
new file mode 100644
index 0000000..ab727c8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements31/in/SomeClass.java
@@ -0,0 +1,13 @@
+package p;
+
+public class SomeClass {
+
+	/**
+	 * 
+	 * @param theSomeClass param of {@link #makeSomeClass(SomeClass) }.
+	 * @return
+	 */
+	Object makeSomeClass(SomeClass theSomeClass) {
+		return theSomeClass;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements31/out/SomeDiffClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements31/out/SomeDiffClass.java
new file mode 100644
index 0000000..48daac5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements31/out/SomeDiffClass.java
@@ -0,0 +1,13 @@
+package p;
+
+public class SomeDiffClass {
+
+	/**
+	 * 
+	 * @param theSomeDiffClass param of {@link #makeSomeDiffClass(SomeDiffClass) }.
+	 * @return
+	 */
+	Object makeSomeDiffClass(SomeDiffClass theSomeDiffClass) {
+		return theSomeDiffClass;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements32/in/SomeClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements32/in/SomeClass.java
new file mode 100644
index 0000000..0adbeed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements32/in/SomeClass.java
@@ -0,0 +1,8 @@
+package p;
+public class SomeClass {
+    
+	public void foo() {
+		SomeClass someClass;
+		SomeClass someDifferentClass;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements33/in/Why.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements33/in/Why.java
new file mode 100644
index 0000000..2305392
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements33/in/Why.java
@@ -0,0 +1,17 @@
+package p;
+
+public class Why {
+	
+	class A {	}
+	class B {	}
+	
+	void foo() {
+		A a= new A() {
+			public void inA(Why why) {}
+		};
+		
+		B b= new B() {
+			public void inB(Why why) {}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements33/out/WhyNot.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements33/out/WhyNot.java
new file mode 100644
index 0000000..a67501f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements33/out/WhyNot.java
@@ -0,0 +1,17 @@
+package p;
+
+public class WhyNot {
+	
+	class A {	}
+	class B {	}
+	
+	void foo() {
+		A a= new A() {
+			public void inA(WhyNot whyNot) {}
+		};
+		
+		B b= new B() {
+			public void inB(WhyNot whyNot) {}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements34/in/Try.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements34/in/Try.java
new file mode 100644
index 0000000..e8ca695
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements34/in/Try.java
@@ -0,0 +1,20 @@
+package p;
+
+public class Try {
+	
+	Try tryReturn() { return null; }
+	void tryArg(Try arg) { }
+	void tryElement(java.util.List<Try> argList) { }
+	
+	void tryDont() { }
+	<T extends Try> void tryC(int tryKind) {	}
+	void tryA(@Constants(Try.class) int tryKind) { }
+	void tryB(int tryKind) {
+		@Constants(Try.class) int tryCopy, tryCopy2= tryKind;
+	}
+	@Constants(value= Try.class) Object fTryA, fTryB;
+}
+
+@interface Constants {
+	Class<?> value();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements34/out/Bla.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements34/out/Bla.java
new file mode 100644
index 0000000..f99087b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testSimilarElements34/out/Bla.java
@@ -0,0 +1,20 @@
+package p;
+
+public class Bla {
+	
+	Bla blaReturn() { return null; }
+	void blaArg(Bla arg) { }
+	void blaElement(java.util.List<Bla> argList) { }
+	
+	void tryDont() { }
+	<T extends Bla> void tryC(int tryKind) {	}
+	void tryA(@Constants(Bla.class) int tryKind) { }
+	void tryB(int tryKind) {
+		@Constants(Bla.class) int tryCopy, tryCopy2= tryKind;
+	}
+	@Constants(value= Bla.class) Object fTryA, fTryB;
+}
+
+@interface Constants {
+	Class<?> value();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testUnicode01/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testUnicode01/in/B.java
new file mode 100644
index 0000000..3c4b3a3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testUnicode01/in/B.java
@@ -0,0 +1,14 @@
+package p;
+public class \u0042 {
+	p.B b;
+	p.\u0042 b2;
+	\u0070. B b3;
+	\u0070.\u0042 b4;
+
+	public static \u0042 newInstance() {
+		return new \u0042();
+	}
+
+	public \u0042() {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testUnicode01/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testUnicode01/out/C.java
new file mode 100644
index 0000000..a128ed1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testUnicode01/out/C.java
@@ -0,0 +1,14 @@
+package p;
+public class C {
+	p.C b;
+	p.C b2;
+	\u0070. C b3;
+	\u0070.C b4;
+
+	public static C newInstance() {
+		return new C();
+	}
+
+	public C() {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg1/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg1/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg2/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg2/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg3/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg3/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg4/in/A.java
new file mode 100644
index 0000000..6f63ab9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameType/testWrongArg4/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+}
+class B extends A{
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test0/in/A.java
new file mode 100644
index 0000000..85166d9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test0/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A<T>{
+	private int f;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test0/out/A.java
new file mode 100644
index 0000000..4016d53
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test0/out/A.java
@@ -0,0 +1,4 @@
+package p;
+class A<S>{
+	private int f;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test1/in/A.java
new file mode 100644
index 0000000..e1f3b89
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test1/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A<T>{
+	private T f;
+	void m(){
+		T g= f;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test1/out/A.java
new file mode 100644
index 0000000..2267609
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test1/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A<S>{
+	private S f;
+	void m(){
+		S g= f;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test10/in/A.java
new file mode 100644
index 0000000..77bc6b53
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test10/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A<T>{
+	private T f;
+	class B<T>{
+		<T> T f(T t) {
+			T s=t;
+			return null;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test10/out/A.java
new file mode 100644
index 0000000..3b841f8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test10/out/A.java
@@ -0,0 +1,10 @@
+package p;
+class A<T>{
+	private T f;
+	class B<T>{
+		<S> S f(S t) {
+			S s=t;
+			return null;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test11/in/A.java
new file mode 100644
index 0000000..c8e154f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test11/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A<T>{
+	private int f;
+	static <T> T f(T t) {return null;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test11/out/A.java
new file mode 100644
index 0000000..09beebd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test11/out/A.java
@@ -0,0 +1,5 @@
+package p;
+class A<T>{
+	private int f;
+	static <S> T f(T t) {return null;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test12/in/A.java
new file mode 100644
index 0000000..1be1f59
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test12/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A<T>{
+	private T f;
+	class B<T>{
+		static <T> T f(T t) {
+			T s=t;
+			return null;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test12/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test12/out/A.java
new file mode 100644
index 0000000..60d7555
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test12/out/A.java
@@ -0,0 +1,10 @@
+package p;
+class A<T>{
+	private T f;
+	class B<T>{
+		static <S> T f(T t) {
+			T s=t;
+			return null;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test13/in/A.java
new file mode 100644
index 0000000..ed344d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test13/in/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.Collection;
+import java.util.List;
+
+class A<T extends Number & Cloneable> {
+    T t;
+    T transform(T t) {
+        return t;
+    }
+    Collection<? super T> add(List<? extends T> t) {
+        return null;
+    }
+    
+    class Inner<I extends T> {
+        T tee;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test13/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test13/out/A.java
new file mode 100644
index 0000000..b52cba1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test13/out/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.Collection;
+import java.util.List;
+
+class A<S extends Number & Cloneable> {
+    S t;
+    S transform(S t) {
+        return t;
+    }
+    Collection<? super S> add(List<? extends S> t) {
+        return null;
+    }
+    
+    class Inner<I extends S> {
+        S tee;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test14/in/A.java
new file mode 100644
index 0000000..1c87f45
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test14/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+/**
+ * @param <ELEMENT> the element
+ * @see A#take(Object)
+ */
+class A<ELEMENT> {
+	ELEMENT e;
+	void take(ELEMENT e) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test14/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test14/out/A.java
new file mode 100644
index 0000000..01292d7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test14/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+/**
+ * @param <E> the element
+ * @see A#take(Object)
+ */
+class A<E> {
+	E e;
+	void take(E e) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test15/in/A.java
new file mode 100644
index 0000000..3e1211d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test15/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+/**
+ * @param <T> the element
+ * @see A#T
+ * @see A#take(T) hint: T is not supported here
+ */
+class A<T> {
+    T T;
+    /**
+     * @param T the element to assign to {@link #T}
+     */
+    void take(T T) {
+        this.T= T;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test15/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test15/out/A.java
new file mode 100644
index 0000000..8f516cb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test15/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+/**
+ * @param <S> the element
+ * @see A#T
+ * @see A#take(S) hint: T is not supported here
+ */
+class A<S> {
+    S T;
+    /**
+     * @param T the element to assign to {@link #T}
+     */
+    void take(S T) {
+        this.T= T;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test2/in/A.java
new file mode 100644
index 0000000..e1f3b89
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test2/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A<T>{
+	private T f;
+	void m(){
+		T g= f;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test2/out/A.java
new file mode 100644
index 0000000..f300dc7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test2/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A<S>{
+	private T f;
+	void m(){
+		T g= f;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test3/in/A.java
new file mode 100644
index 0000000..714c3e9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test3/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A<R,T>{
+	private T f;
+	T m(R r, T t){
+		T g= f;
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test3/out/A.java
new file mode 100644
index 0000000..59c53f5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test3/out/A.java
@@ -0,0 +1,8 @@
+package p;
+class A<R,S>{
+	private S f;
+	S m(R r, S t){
+		S g= f;
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test4/in/A.java
new file mode 100644
index 0000000..714c3e9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test4/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A<R,T>{
+	private T f;
+	T m(R r, T t){
+		T g= f;
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test4/out/A.java
new file mode 100644
index 0000000..7e31116
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test4/out/A.java
@@ -0,0 +1,8 @@
+package p;
+class A<R,S>{
+	private T f;
+	T m(R r, T t){
+		T g= f;
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test5/in/A.java
new file mode 100644
index 0000000..81f2604
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test5/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<T>{
+	private int f;
+	class B<T>{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test5/out/A.java
new file mode 100644
index 0000000..00518e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test5/out/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<S>{
+	private int f;
+	class B<T>{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test6/in/A.java
new file mode 100644
index 0000000..86dee3a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test6/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<R,S>{
+	private int f;
+	class B<T,R>{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test6/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test6/out/A.java
new file mode 100644
index 0000000..6b0a8af
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test6/out/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<R,T>{
+	private int f;
+	class B<T,R>{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test7/in/A.java
new file mode 100644
index 0000000..81f2604
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test7/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<T>{
+	private int f;
+	class B<T>{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test7/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test7/out/A.java
new file mode 100644
index 0000000..00518e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test7/out/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<S>{
+	private int f;
+	class B<T>{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test8/in/A.java
new file mode 100644
index 0000000..86dee3a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test8/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<R,S>{
+	private int f;
+	class B<T,R>{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test8/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test8/out/A.java
new file mode 100644
index 0000000..6b0a8af
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test8/out/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<R,T>{
+	private int f;
+	class B<T,R>{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test9/in/A.java
new file mode 100644
index 0000000..c8e154f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test9/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A<T>{
+	private int f;
+	static <T> T f(T t) {return null;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test9/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test9/out/A.java
new file mode 100644
index 0000000..483f335
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/test9/out/A.java
@@ -0,0 +1,5 @@
+package p;
+class A<T>{
+	private int f;
+	static <S> S f(S t) {return null;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail0/in/A.java
new file mode 100644
index 0000000..b9f960f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail0/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<T>{
+	class S {}
+	private int f;
+	private int g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail1/in/A.java
new file mode 100644
index 0000000..fefcd3c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail1/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<T,R>{
+	class S{}
+	private int f;
+	private String g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail2/in/A.java
new file mode 100644
index 0000000..0c2e8dc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail2/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<T>{
+	static class S {}
+	private int f;
+	private int g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail3/in/A.java
new file mode 100644
index 0000000..29db22f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail3/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A<T,S>{
+	private int f;
+	private String g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail4/in/A.java
new file mode 100644
index 0000000..9b790ed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail4/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<T,R>{
+	static class S{}
+	private int f;
+	private String g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail5/in/A.java
new file mode 100644
index 0000000..37599f5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameTypeParameter/testFail5/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A<T>{
+	static class B {
+		static <T> T f(T t) {
+			class S {}
+			return null;
+		} 
+	}
+	private T f;
+	private B g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test1/in/A.java
new file mode 100644
index 0000000..b390b33
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test1/in/A.java
@@ -0,0 +1,5 @@
+package p;
+//renaming A.m to k
+abstract class A {
+	abstract void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test1/out/A.java
new file mode 100644
index 0000000..1c62c61
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test1/out/A.java
@@ -0,0 +1,5 @@
+package p;
+//renaming A.m to k
+abstract class A {
+	abstract void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test10/in/A.java
new file mode 100644
index 0000000..189c1ee
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test10/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	void m(){}
+}
+class B {
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test10/out/A.java
new file mode 100644
index 0000000..39cbee9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test10/out/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	void k(){}
+}
+class B {
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test11/in/A.java
new file mode 100644
index 0000000..73b0420
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test11/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	void m(){}
+}
+class B extends A{
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test11/out/A.java
new file mode 100644
index 0000000..43cb647
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test11/out/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	void k(){}
+}
+class B extends A{
+	void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test12/in/A.java
new file mode 100644
index 0000000..eba14d9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test12/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	void m(){}
+}
+class B extends A{
+	public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test12/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test12/out/A.java
new file mode 100644
index 0000000..dff6414
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test12/out/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m to k
+class A {
+	void k(){}
+}
+class B extends A{
+	public void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test13/in/A.java
new file mode 100644
index 0000000..0e114b1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test13/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class B{
+	private void m(){
+	}
+	void f(){
+		m();
+	}
+}
+class A extends B{
+	void m(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test13/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test13/out/A.java
new file mode 100644
index 0000000..aa8b9db
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test13/out/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class B{
+	private void m(){
+	}
+	void f(){
+		m();
+	}
+}
+class A extends B{
+	void k(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test14/in/A.java
new file mode 100644
index 0000000..962ae44
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test14/in/A.java
@@ -0,0 +1,16 @@
+package p;
+//renaming A.m to k
+class B{
+	private void k(){
+	}
+	void f(){
+		k();
+	}
+}
+class A extends B{
+	void m(){
+	}
+	void f(){
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test14/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test14/out/A.java
new file mode 100644
index 0000000..978ee42
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test14/out/A.java
@@ -0,0 +1,16 @@
+package p;
+//renaming A.m to k
+class B{
+	private void k(){
+	}
+	void f(){
+		k();
+	}
+}
+class A extends B{
+	void k(){
+	}
+	void f(){
+		k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test15/in/A.java
new file mode 100644
index 0000000..0dc48af
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test15/in/A.java
@@ -0,0 +1,7 @@
+package p;
+//renaming A.m to k
+class A{
+	int m(int m){
+		return m(m(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test15/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test15/out/A.java
new file mode 100644
index 0000000..1459a9a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test15/out/A.java
@@ -0,0 +1,7 @@
+package p;
+//renaming A.m to k
+class A{
+	int k(int m){
+		return k(k(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test16/in/A.java
new file mode 100644
index 0000000..ab6d0b5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test16/in/A.java
@@ -0,0 +1,7 @@
+package p;
+//renaming A.m to fred
+class A{
+	int m(int m){
+		return m(m(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test16/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test16/out/A.java
new file mode 100644
index 0000000..f701b63
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test16/out/A.java
@@ -0,0 +1,7 @@
+package p;
+//renaming A.m to fred
+class A{
+	int fred(int m){
+		return fred(fred(m));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test17/in/A.java
new file mode 100644
index 0000000..9e7294f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test17/in/A.java
@@ -0,0 +1,8 @@
+//renaming A.m to kk
+package p;
+public class A {
+	void m(int m){}
+}
+class B extends A{
+	void m(boolean m){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test17/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test17/out/A.java
new file mode 100644
index 0000000..4c21116
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test17/out/A.java
@@ -0,0 +1,8 @@
+//renaming A.m to kk
+package p;
+public class A {
+	void kk(int m){}
+}
+class B extends A{
+	void m(boolean m){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/in/A.java
new file mode 100644
index 0000000..6208aa1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/in/A.java
@@ -0,0 +1,11 @@
+//renaming B.m to kk
+package p;
+class B {
+	void m(int m) {
+	}
+
+}
+public class A extends B {
+	void m(int m) {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/in/C.java
new file mode 100644
index 0000000..4794cc8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/in/C.java
@@ -0,0 +1,6 @@
+package p;
+class C{
+	void k(){
+		new A().m(4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/out/A.java
new file mode 100644
index 0000000..763c416
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/out/A.java
@@ -0,0 +1,11 @@
+//renaming B.m to kk
+package p;
+class B {
+	void kk(int m) {
+	}
+
+}
+public class A extends B {
+	void kk(int m) {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/out/C.java
new file mode 100644
index 0000000..493535e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test18/out/C.java
@@ -0,0 +1,6 @@
+package p;
+class C{
+	void k(){
+		new A().kk(4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test19/in/A.java
new file mode 100644
index 0000000..00408da
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test19/in/A.java
@@ -0,0 +1,13 @@
+//renaming A.m to fred
+package p;
+public class A{
+	void m() {
+	}
+}
+
+class B{
+	void k(){
+		A a= new A();
+		a.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test19/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test19/out/A.java
new file mode 100644
index 0000000..ce31818
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test19/out/A.java
@@ -0,0 +1,13 @@
+//renaming A.m to fred
+package p;
+public class A{
+	void fred() {
+	}
+}
+
+class B{
+	void k(){
+		A a= new A();
+		a.fred();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test2/in/A.java
new file mode 100644
index 0000000..34ca89c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test2/in/A.java
@@ -0,0 +1,15 @@
+//renaming A.m to fred
+package p;
+public class A{
+	void m() {
+	}
+}
+
+class B{
+	void k(){
+		A a= new A();
+		a
+		.
+		m ();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test2/out/A.java
new file mode 100644
index 0000000..d7ddb59
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test2/out/A.java
@@ -0,0 +1,15 @@
+//renaming A.m to fred
+package p;
+public class A{
+	void fred() {
+	}
+}
+
+class B{
+	void k(){
+		A a= new A();
+		a
+		.
+		fred ();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test20/in/A.java
new file mode 100644
index 0000000..726d3fb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test20/in/A.java
@@ -0,0 +1,25 @@
+//renaming A.m to fred
+package p;
+public class A{
+	int m(int m) {
+		return m	(	m	)	;
+	}
+}
+
+class B{
+	void k(){
+		A a= new A();
+		a
+	.
+		m 
+			(
+			a
+				.
+	m	
+				(
+					6
+			)	
+			
+		);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test20/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test20/out/A.java
new file mode 100644
index 0000000..0750d28
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test20/out/A.java
@@ -0,0 +1,25 @@
+//renaming A.m to fred
+package p;
+public class A{
+	int fred(int m) {
+		return fred	(	m	)	;
+	}
+}
+
+class B{
+	void k(){
+		A a= new A();
+		a
+	.
+		fred 
+			(
+			a
+				.
+	fred	
+				(
+					6
+			)	
+			
+		);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test21/in/A.java
new file mode 100644
index 0000000..4d69649
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test21/in/A.java
@@ -0,0 +1,13 @@
+//renaming A.m to fred
+package p;
+public class A{
+	int m(int m) {
+		return m	(	m	)	;
+	}
+}
+class B extends A{
+	void f(){
+		super .
+		m (4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test21/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test21/out/A.java
new file mode 100644
index 0000000..e16a39c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test21/out/A.java
@@ -0,0 +1,13 @@
+//renaming A.m to fred
+package p;
+public class A{
+	int fred(int m) {
+		return fred	(	m	)	;
+	}
+}
+class B extends A{
+	void f(){
+		super .
+		fred (4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test22/in/A.java
new file mode 100644
index 0000000..56d0efa
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test22/in/A.java
@@ -0,0 +1,40 @@
+package p;
+//renaming A.m to k
+class B{
+	private void m(){
+		System.out.println("B.m");	
+	}
+	void fred(){
+		m();
+		B b= new B();
+		b.m();	
+		B b1= new A();
+		b1.m();
+		B bc= new C();
+		bc.m();
+		
+		A ba= new A();
+		ba.m();
+		A ac= new C();
+		ac.m();
+		C c= new C();
+		c.m();
+		
+	}
+}
+class A extends B{
+	void m(){
+		System.out.println("A.m");	
+	}
+}
+class C extends A{
+	void m(){
+		System.out.println("C.m");	
+	}
+}
+
+class test{
+	public static void main(String[] args){
+		new B().fred();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test22/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test22/out/A.java
new file mode 100644
index 0000000..c09b947
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test22/out/A.java
@@ -0,0 +1,40 @@
+package p;
+//renaming A.m to k
+class B{
+	private void m(){
+		System.out.println("B.m");	
+	}
+	void fred(){
+		m();
+		B b= new B();
+		b.m();	
+		B b1= new A();
+		b1.m();
+		B bc= new C();
+		bc.m();
+		
+		A ba= new A();
+		ba.k();
+		A ac= new C();
+		ac.k();
+		C c= new C();
+		c.k();
+		
+	}
+}
+class A extends B{
+	void k(){
+		System.out.println("A.m");	
+	}
+}
+class C extends A{
+	void k(){
+		System.out.println("C.m");	
+	}
+}
+
+class test{
+	public static void main(String[] args){
+		new B().fred();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test23/in/A.java
new file mode 100644
index 0000000..34da048
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test23/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class A{
+	void m(){
+	}
+}
+class test{
+	void m(){
+		class X extends A{
+			void m(){}
+		}
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test23/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test23/out/A.java
new file mode 100644
index 0000000..ad18f1a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test23/out/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+class A{
+	void k(){
+	}
+}
+class test{
+	void k(){
+		class X extends A{
+			void k(){}
+		}
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test24/in/A.java
new file mode 100644
index 0000000..751eff5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test24/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//renaming A.m to k
+class A{
+	void m(String s){
+	}
+}
+class B extends A{
+	void m(java.lang.String s){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test24/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test24/out/A.java
new file mode 100644
index 0000000..692f888
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test24/out/A.java
@@ -0,0 +1,10 @@
+package p;
+//renaming A.m to k
+class A{
+	void k(String s){
+	}
+}
+class B extends A{
+	void k(java.lang.String s){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test25/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test25/in/A.java
new file mode 100644
index 0000000..b7498e1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test25/in/A.java
@@ -0,0 +1,15 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void m(){
+		System.out.println("a");
+	}
+	class B{
+		class C {
+			void f(){
+				m();
+			}
+		}	
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test25/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test25/out/A.java
new file mode 100644
index 0000000..a0ccb4d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test25/out/A.java
@@ -0,0 +1,15 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void k(){
+		System.out.println("a");
+	}
+	class B{
+		class C {
+			void f(){
+				k();
+			}
+		}	
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test26/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test26/in/A.java
new file mode 100644
index 0000000..a89eb28
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test26/in/A.java
@@ -0,0 +1,11 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void m(){}
+}
+class B{
+	static {
+		new A().m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test26/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test26/out/A.java
new file mode 100644
index 0000000..0f715d6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test26/out/A.java
@@ -0,0 +1,11 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void k(){}
+}
+class B{
+	static {
+		new A().k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test27/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test27/in/A.java
new file mode 100644
index 0000000..23de065
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test27/in/A.java
@@ -0,0 +1,11 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void m(){}
+}
+class B{
+	{
+		new A().m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test27/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test27/out/A.java
new file mode 100644
index 0000000..6b618dc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test27/out/A.java
@@ -0,0 +1,11 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void k(){}
+}
+class B{
+	{
+		new A().k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test28/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test28/in/A.java
new file mode 100644
index 0000000..4a44acd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test28/in/A.java
@@ -0,0 +1,9 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void m(){}
+	{
+		new A().m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test28/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test28/out/A.java
new file mode 100644
index 0000000..73719a3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test28/out/A.java
@@ -0,0 +1,9 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void k(){}
+	{
+		new A().k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test29/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test29/in/A.java
new file mode 100644
index 0000000..d3cb7ef
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test29/in/A.java
@@ -0,0 +1,9 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void m(){}
+	static {
+		new A().m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test29/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test29/out/A.java
new file mode 100644
index 0000000..833cebf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test29/out/A.java
@@ -0,0 +1,9 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void k(){}
+	static {
+		new A().k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test30/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test30/in/A.java
new file mode 100644
index 0000000..1fdbd9b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test30/in/A.java
@@ -0,0 +1,20 @@
+//renaming A.m to k 
+package p;
+
+class B{
+	A f(){
+		return null;
+	}
+}
+
+class A{
+	B m(){
+		return null;
+	}
+}
+
+class C{
+	void f(B b){
+		b.f().m().f().m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test30/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test30/out/A.java
new file mode 100644
index 0000000..cf5f404
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test30/out/A.java
@@ -0,0 +1,20 @@
+//renaming A.m to k 
+package p;
+
+class B{
+	A f(){
+		return null;
+	}
+}
+
+class A{
+	B k(){
+		return null;
+	}
+}
+
+class C{
+	void f(B b){
+		b.f().k().f().k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test31/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test31/in/A.java
new file mode 100644
index 0000000..60f4b48
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test31/in/A.java
@@ -0,0 +1,8 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void m(){
+		this.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test31/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test31/out/A.java
new file mode 100644
index 0000000..5325623
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test31/out/A.java
@@ -0,0 +1,8 @@
+//renaming A.m to k 
+package p;
+
+class A{
+	void k(){
+		this.k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test32/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test32/in/A.java
new file mode 100644
index 0000000..db159df
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test32/in/A.java
@@ -0,0 +1,9 @@
+//no ref update
+//renaming A.m to k 
+package p;
+
+class A{
+	void m(){
+		this.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test32/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test32/out/A.java
new file mode 100644
index 0000000..d129128
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test32/out/A.java
@@ -0,0 +1,9 @@
+//no ref update
+//renaming A.m to k 
+package p;
+
+class A{
+	void k(){
+		this.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test33/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test33/in/A.java
new file mode 100644
index 0000000..e955c8b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test33/in/A.java
@@ -0,0 +1,11 @@
+//renaming A.m to k 
+package p;
+class A{
+	public void m(){}
+}
+
+class AQE extends A{
+	public void m(){
+		super.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test33/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test33/out/A.java
new file mode 100644
index 0000000..7eafaed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test33/out/A.java
@@ -0,0 +1,11 @@
+//renaming A.m to k 
+package p;
+class A{
+	public void k(){}
+}
+
+class AQE extends A{
+	public void k(){
+		super.k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test34/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test34/in/A.java
new file mode 100644
index 0000000..3a6c8d4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test34/in/A.java
@@ -0,0 +1,18 @@
+package p;
+class A {
+/**
+*  Comment section
+*
+**/
+  public A() {
+  }
+
+  protected void A() {
+  }
+}
+
+class B extends A {
+  public B() {
+     super(); 
+  }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test34/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test34/out/A.java
new file mode 100644
index 0000000..3a6c8d4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test34/out/A.java
@@ -0,0 +1,18 @@
+package p;
+class A {
+/**
+*  Comment section
+*
+**/
+  public A() {
+  }
+
+  protected void A() {
+  }
+}
+
+class B extends A {
+  public B() {
+     super(); 
+  }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test35/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test35/in/A.java
new file mode 100644
index 0000000..7f8b386
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test35/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A {
+  protected void foo(Object o){}
+  protected void foo(String s){}
+}
+class B extends A{
+	protected void foo(Object o){}
+	protected void foo(String s){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test35/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test35/out/A.java
new file mode 100644
index 0000000..f76e88f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test35/out/A.java
@@ -0,0 +1,9 @@
+package p;
+class A {
+  protected void bar(Object o){}
+  protected void foo(String s){}
+}
+class B extends A{
+	protected void bar(Object o){}
+	protected void foo(String s){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test36/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test36/in/A.java
new file mode 100644
index 0000000..065d28b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test36/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A extends F {
+  void foo(String s){}
+}
+class F {
+  void foo(F b){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test36/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test36/out/A.java
new file mode 100644
index 0000000..de317ba
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test36/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A extends F {
+  void bar(String s){}
+}
+class F {
+  void foo(F b){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test37/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test37/in/A.java
new file mode 100644
index 0000000..ccb0786
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test37/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+  void foo(A b){}
+}
+class F extends A {
+  void foo(String s){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test37/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test37/out/A.java
new file mode 100644
index 0000000..85b0a81
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test37/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+  void bar(A b){}
+}
+class F extends A {
+  void foo(String s){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test38/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test38/in/A.java
new file mode 100644
index 0000000..da2eabb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test38/in/A.java
@@ -0,0 +1,25 @@
+//rename A#m() to k() -> must rename all m()
+package p;
+abstract class Abstract {
+	public abstract void m();
+	void caller(Abstract abstr, A a, Interface inter, Impl2 impl2) {
+		abstr.m();
+		a.m();
+		inter.m();
+		impl2.m();
+	}
+}
+
+class A extends Abstract {
+	public void m() { // from Abstract
+	}
+}
+
+interface Interface { //independent of Abstract
+	void m();
+}
+
+class Impl2 extends Abstract implements Interface {
+	public void m() { // from Abstract AND from Interface
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test38/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test38/out/A.java
new file mode 100644
index 0000000..6fb8dfe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test38/out/A.java
@@ -0,0 +1,25 @@
+//rename A#m() to k() -> must rename all m()
+package p;
+abstract class Abstract {
+	public abstract void k();
+	void caller(Abstract abstr, A a, Interface inter, Impl2 impl2) {
+		abstr.k();
+		a.k();
+		inter.k();
+		impl2.k();
+	}
+}
+
+class A extends Abstract {
+	public void k() { // from Abstract
+	}
+}
+
+interface Interface { //independent of Abstract
+	void k();
+}
+
+class Impl2 extends Abstract implements Interface {
+	public void k() { // from Abstract AND from Interface
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test39/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test39/in/A.java
new file mode 100644
index 0000000..9b11821
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test39/in/A.java
@@ -0,0 +1,19 @@
+//can rename A.m to k
+package p;
+class A{
+	void m(){
+	}
+}
+class X{
+	void k(){
+	}
+	class B{
+		void k(){
+		}
+		class C extends A{
+			void f(){
+				m();
+			}
+		}	
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test39/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test39/out/A.java
new file mode 100644
index 0000000..3e2b855
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test39/out/A.java
@@ -0,0 +1,19 @@
+//can rename A.m to k
+package p;
+class A{
+	void k(){
+	}
+}
+class X{
+	void k(){
+	}
+	class B{
+		void k(){
+		}
+		class C extends A{
+			void f(){
+				k();
+			}
+		}	
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test40/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test40/in/A.java
new file mode 100644
index 0000000..73ac3c1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test40/in/A.java
@@ -0,0 +1,9 @@
+package p;
+public class A {
+	void doit() {
+		class LocalClass {
+			public void method(int i) {} //rename to "method2"
+		}
+	}
+	void method2(int i) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test40/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test40/out/A.java
new file mode 100644
index 0000000..ca0d87b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/test40/out/A.java
@@ -0,0 +1,9 @@
+package p;
+public class A {
+	void doit() {
+		class LocalClass {
+			public void method2(int i) {} //rename to "method2"
+		}
+	}
+	void method2(int i) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testAnon0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testAnon0/in/A.java
new file mode 100644
index 0000000..09ece35
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testAnon0/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+public class A {
+	void m(){}
+}
+class B{
+	void f(){
+		A a= new A(){
+			void m(){
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testAnon0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testAnon0/out/A.java
new file mode 100644
index 0000000..3ebde2a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testAnon0/out/A.java
@@ -0,0 +1,13 @@
+package p;
+//renaming A.m to k
+public class A {
+	void k(){}
+}
+class B{
+	void f(){
+		A a= new A(){
+			void k(){
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate01/in/A.java
new file mode 100644
index 0000000..e3189b1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate01/in/A.java
@@ -0,0 +1,5 @@
+package p;
+
+public class A {
+	void m() { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate01/out/A.java
new file mode 100644
index 0000000..13a597d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate01/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+public class A {
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	void m() {
+		k();
+	}
+
+	void k() { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate02/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate02/in/A.java
new file mode 100644
index 0000000..8bf10c7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate02/in/A.java
@@ -0,0 +1,17 @@
+package p;
+
+public abstract class A {
+	abstract void m();
+}
+
+class B extends A {
+	void m() {
+		//Foo
+	}
+}
+
+class C extends B {
+	void m() {
+		//Bar
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate02/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate02/out/A.java
new file mode 100644
index 0000000..c5ca180
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate02/out/A.java
@@ -0,0 +1,36 @@
+package p;
+
+public abstract class A {
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	abstract void m();
+
+	abstract void k();
+}
+
+class B extends A {
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	void m() {
+		k();
+	}
+
+	void k() {
+		//Foo
+	}
+}
+
+class C extends B {
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	void m() {
+		k();
+	}
+
+	void k() {
+		//Bar
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate03/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate03/in/A.java
new file mode 100644
index 0000000..0eb41b2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate03/in/A.java
@@ -0,0 +1,22 @@
+package p;
+
+public abstract class A {
+	abstract void m();
+}
+
+class B extends A {
+	void m() {
+		//Foo
+	}
+}
+
+class C extends B {
+	void m() {
+		//Bar
+		C c= new C() {
+			void m() {
+				// X
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate03/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate03/out/A.java
new file mode 100644
index 0000000..f540fa6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testDelegate03/out/A.java
@@ -0,0 +1,48 @@
+package p;
+
+public abstract class A {
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	abstract void m();
+
+	abstract void k();
+}
+
+class B extends A {
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	void m() {
+		k();
+	}
+
+	void k() {
+		//Foo
+	}
+}
+
+class C extends B {
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	void m() {
+		k();
+	}
+
+	void k() {
+		//Bar
+		C c= new C() {
+			/**
+			 * @deprecated Use {@link #k()} instead
+			 */
+			void m() {
+				k();
+			}
+
+			void k() {
+				// X
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum1/in/A.java
new file mode 100644
index 0000000..b63a84c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum1/in/A.java
@@ -0,0 +1,27 @@
+package p;
+
+interface A {
+    int getNameLength();
+}
+
+enum Enum implements A{
+    RED, GREEN, BLUE;
+    public int getNameLength() {
+        return name().length();
+    }
+}
+
+class Name implements A {
+    Enum fRed= Enum.RED;
+    
+    public int getNameLength() {
+        return fRed.getNameLength();
+    }
+}
+
+interface IOther {
+    int getNameLength();
+}
+interface IOther2 {
+    int getNameSize();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum1/out/A.java
new file mode 100644
index 0000000..9a6bc6b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum1/out/A.java
@@ -0,0 +1,27 @@
+package p;
+
+interface A {
+    int getNameSize();
+}
+
+enum Enum implements A{
+    RED, GREEN, BLUE;
+    public int getNameSize() {
+        return name().length();
+    }
+}
+
+class Name implements A {
+    Enum fRed= Enum.RED;
+    
+    public int getNameSize() {
+        return fRed.getNameSize();
+    }
+}
+
+interface IOther {
+    int getNameLength();
+}
+interface IOther2 {
+    int getNameSize();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum2/in/A.java
new file mode 100644
index 0000000..2c2dbc9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum2/in/A.java
@@ -0,0 +1,22 @@
+package p;
+
+class Generic<E> {
+    enum A {
+        ONE {
+            A getSquare() {
+                return ONE;
+            }
+        },
+        TWO {
+            A getSquare() {
+                return MANY;
+            }
+        },
+        MANY {
+            A getSquare() {
+                return MANY;
+            }
+        };
+        abstract A getSquare();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum2/out/A.java
new file mode 100644
index 0000000..7608e97
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum2/out/A.java
@@ -0,0 +1,22 @@
+package p;
+
+class Generic<E> {
+    enum A {
+        ONE {
+            A get2ndPower() {
+                return ONE;
+            }
+        },
+        TWO {
+            A get2ndPower() {
+                return MANY;
+            }
+        },
+        MANY {
+            A get2ndPower() {
+                return MANY;
+            }
+        };
+        abstract A get2ndPower();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum3/in/A.java
new file mode 100644
index 0000000..ddd098a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum3/in/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class Generic<E> {
+    enum A {
+        ONE ;
+        A getSquare() {
+            return ONE;
+        }
+    }
+    boolean test() {
+        return A.ONE == A.ONE.getSquare();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum3/out/A.java
new file mode 100644
index 0000000..4ad2e80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnum3/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class Generic<E> {
+    enum A {
+        ONE ;
+        A get2ndPower() {
+            return ONE;
+        }
+    }
+    boolean test() {
+        return A.ONE == A.ONE.get2ndPower();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnumFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnumFail1/in/A.java
new file mode 100644
index 0000000..f580f39
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testEnumFail1/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+interface A {
+    int value(String s);
+}
+
+enum En implements A {
+    ONE, TWO, THREE;
+    public int value(String s) {
+        return Integer.valueOf(s);
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail0/in/A.java
new file mode 100644
index 0000000..e6c4867
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail0/in/A.java
@@ -0,0 +1,5 @@
+package p;
+//can't rename native methods
+class A{
+ 	native m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail1/in/A.java
new file mode 100644
index 0000000..630221d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail1/in/A.java
@@ -0,0 +1,7 @@
+package p;
+//toString can't be renamed - it's a special case (it's called implicitly)
+ class A{
+	public String toString(){
+		return null;
+	}; 	
+ }
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail10/in/A.java
new file mode 100644
index 0000000..f7b9bb4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail10/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename m to k
+class B{
+	void k(){}
+}
+class A extends B{
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail11/in/A.java
new file mode 100644
index 0000000..5f055ac
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail11/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename m to k
+class B{
+	static void k(){}
+}
+class A extends B{
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail12/in/A.java
new file mode 100644
index 0000000..9c02f0c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail12/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename m to k
+class B{
+	void k(){}
+}
+abstract class A extends B{
+	abstract void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail13/in/A.java
new file mode 100644
index 0000000..4333b65
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail13/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename m to k
+abstract class B{
+	abstract void k();
+}
+class A extends B{
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail14/in/A.java
new file mode 100644
index 0000000..e835268
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail14/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename m to k
+class B{
+	void k(int x){}
+}
+class A extends B{
+	void m(int f){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail15/in/A.java
new file mode 100644
index 0000000..c1f7d7b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail15/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename m to k
+class C {
+	void k(){}
+}
+class B extends C{
+}
+class A extends B{
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail17/in/A.java
new file mode 100644
index 0000000..9eb829a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail17/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//renaming A.m would require renaming a native method
+class A {
+	void m(){}
+}
+class B extends A{
+	native void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail18/in/A.java
new file mode 100644
index 0000000..a1da779
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail18/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename m to k - defined in subclass
+class A {
+	void m(){}
+}
+class B extends A{
+	private void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail19/in/A.java
new file mode 100644
index 0000000..8b3a74e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail19/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename m to k - defined in subclass
+class A {
+	void m(){}
+}
+class B extends A{
+	public void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail2/in/A.java
new file mode 100644
index 0000000..6ef68c1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail2/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename m in A  - must do it in B
+class B{
+	void m(){}
+}
+class A extends B{
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail20/in/A.java
new file mode 100644
index 0000000..90c07d1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail20/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename m to k - defined in subclass
+class A {
+	void m(){
+	}
+}
+class B extends A{
+	public void k(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail21/in/A.java
new file mode 100644
index 0000000..a16713b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail21/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename m to k - defined in subclass
+class A {
+	void m(){
+	}
+}
+class B extends A{
+	static void k(){
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail22/in/A.java
new file mode 100644
index 0000000..5a15474
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail22/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename m to k - defined in subclass
+class A {
+	void m(){
+	}
+}
+class B extends A{
+	private static void k(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail23/in/A.java
new file mode 100644
index 0000000..3d07a65
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail23/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename A.m to k - defined in superclass
+class B {
+	void k(){
+	}
+}
+class A extends B{
+	void m(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail24/in/A.java
new file mode 100644
index 0000000..a53fdd9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail24/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename A.m to k - defined in superclass
+class B {
+	static void k(){
+	}
+}
+class A extends B{
+	void m(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail25/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail25/in/A.java
new file mode 100644
index 0000000..3d07a65
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail25/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename A.m to k - defined in superclass
+class B {
+	void k(){
+	}
+}
+class A extends B{
+	void m(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail26/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail26/in/A.java
new file mode 100644
index 0000000..6b4353a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail26/in/A.java
@@ -0,0 +1,7 @@
+package p;
+//can't rename A.m to k - duplicate
+class A {
+	void k(){}
+	void m(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail27/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail27/in/A.java
new file mode 100644
index 0000000..aba458a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail27/in/A.java
@@ -0,0 +1,7 @@
+package p;
+//can't rename A.m to k - duplicate
+class A {
+	private void k(){}
+	void m(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail28/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail28/in/A.java
new file mode 100644
index 0000000..bf6ed6a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail28/in/A.java
@@ -0,0 +1,7 @@
+package p;
+//can't rename A.m to k - duplicate
+class A {
+	static void k(){}
+	void m(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail29/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail29/in/A.java
new file mode 100644
index 0000000..3af831e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail29/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename A.m - defined in superclass
+class B{
+	void m(){
+	}
+}
+class A extends B{
+	void m(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail3/in/A.java
new file mode 100644
index 0000000..102bf12
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail3/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename m in A - must do it in B
+class B{
+	int m(){}
+}
+class C extends B{
+}
+class A extends C{
+	int m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail30/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail30/in/A.java
new file mode 100644
index 0000000..d467ff8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail30/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename A.m - declared in superclass
+class B {
+	native void m();
+}
+class A extends B{
+	void m(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail31/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail31/in/A.java
new file mode 100644
index 0000000..d756bca
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail31/in/A.java
@@ -0,0 +1,12 @@
+//can't rename A.m to k
+package p;
+public class A {
+	void m(String m){
+		System.out.println("A");
+	}
+}
+class B extends A{
+	void k(Object m){
+		System.out.println("B");
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail32/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail32/in/A.java
new file mode 100644
index 0000000..8fcdbd8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail32/in/A.java
@@ -0,0 +1,12 @@
+//can't rename A.m to k
+package p;
+public class A {
+	void m(Object m){
+		System.out.println("A");
+	}
+}
+class B extends A{
+	void k(String m){
+		System.out.println("B");
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail33/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail33/in/A.java
new file mode 100644
index 0000000..c917be1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail33/in/A.java
@@ -0,0 +1,7 @@
+//can't rename A.toString
+package p;
+class A{
+	public java.lang.String toString(){
+		return "fred";
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail34/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail34/in/A.java
new file mode 100644
index 0000000..1c72cc2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail34/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename A.m to k
+class A{
+	void m(String s){
+	}
+}
+class B extends A{
+	void k(java.lang.String s){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail36/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail36/in/A.java
new file mode 100644
index 0000000..98e2eed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail36/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename A.m to k
+class B{
+	static void k(){}	
+}
+class A extends B{
+ 	public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail37/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail37/in/A.java
new file mode 100644
index 0000000..d4c4e40
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail37/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename A.m to k
+class A{
+	void m(){};
+}
+class B extends A{
+ 	static public void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail38/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail38/in/A.java
new file mode 100644
index 0000000..524f740
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail38/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename A.m to k
+class A{
+	void m(){};
+	class B {
+		void k(){
+			m();
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail39/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail39/in/A.java
new file mode 100644
index 0000000..89b748f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail39/in/A.java
@@ -0,0 +1,15 @@
+//can't rename A.m to k
+package p;
+
+class A {
+	void m(){ }
+}
+
+class B {
+	void k(){ }
+	class I extends A {
+		void f(){
+			k(); //binds to A#k() iff that exists
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail4/in/A.java
new file mode 100644
index 0000000..3fc227b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail4/in/A.java
@@ -0,0 +1,12 @@
+package p;
+//renaming m in A would require renaming it in I
+class A{
+ public void m(){}
+}
+
+class B extends A implements I{
+}
+
+interface I {
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail40/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail40/in/A.java
new file mode 100644
index 0000000..fe57a30
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail40/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+    void m(int primitive) {}
+    void k(Integer reference) {}
+    
+    void use() {
+        m(12);
+        k(13);
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail41/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail41/in/A.java
new file mode 100644
index 0000000..dfda347
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail41/in/A.java
@@ -0,0 +1,18 @@
+package p;
+import static p.B.k;
+
+class A {
+	void m(){ }
+}
+
+class B {
+	public static void k() {}
+}
+
+class C {
+	class I extends A {
+		{
+			k();
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail5/in/A.java
new file mode 100644
index 0000000..ff8d75e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail5/in/A.java
@@ -0,0 +1,16 @@
+package p;
+//renaming m in A would require renaming it in I
+class A{
+ 	public void m(){}
+}
+
+class B extends A implements I2{
+}
+
+
+interface I {
+	void m();
+}
+
+interface I2 extends I{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail6/in/A.java
new file mode 100644
index 0000000..7d0529c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail6/in/A.java
@@ -0,0 +1,9 @@
+package p;
+//renaming m in A would require renaming it in I
+class A implements I{
+	void m(){}
+}
+
+interface I {
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail7/in/A.java
new file mode 100644
index 0000000..64b78f3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail7/in/A.java
@@ -0,0 +1,6 @@
+package p;
+//can't rename m to k
+class A{
+	void m(){}
+	void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail8/in/A.java
new file mode 100644
index 0000000..b3f4cac
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail8/in/A.java
@@ -0,0 +1,8 @@
+package p;
+//can't rename m to k
+class A{
+	void m(){}
+}
+class B extends A{
+	void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail9/in/A.java
new file mode 100644
index 0000000..fe8816e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testFail9/in/A.java
@@ -0,0 +1,11 @@
+package p;
+//can't rename m to k
+class A{
+	int m(int i){}
+}
+class B extends A{
+	
+}
+class C extends B{
+	int k(int i){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics1/in/A.java
new file mode 100644
index 0000000..2cfd80d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics1/in/A.java
@@ -0,0 +1,23 @@
+class Test {
+    public static void main(String[] args) {
+        new A<Number>().m(new Double(1));
+        new A<Integer>().m(new Integer(2));
+
+        new Impl().m(new Integer(3));
+        new Impl().m(new Float(4));
+        
+        A<Number> a= new Impl();
+        a.m(new Integer(6));
+        a.m(new Double(7));
+    }
+}
+
+
+class A<G> {
+	void m(G g) { System.out.println("A#m(G): " + g); }
+}
+
+class Impl extends A<Number> {
+	void m(Integer g) { System.out.println("nonripple Impl#m(Integer): " + g);}
+	void m(Number g) { System.out.println("Impl#m(Number): " + g); }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics1/out/A.java
new file mode 100644
index 0000000..931c315
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics1/out/A.java
@@ -0,0 +1,23 @@
+class Test {
+    public static void main(String[] args) {
+        new A<Number>().k(new Double(1));
+        new A<Integer>().k(new Integer(2));
+
+        new Impl().m(new Integer(3));
+        new Impl().k(new Float(4));
+        
+        A<Number> a= new Impl();
+        a.k(new Integer(6));
+        a.k(new Double(7));
+    }
+}
+
+
+class A<G> {
+	void k(G g) { System.out.println("A#m(G): " + g); }
+}
+
+class Impl extends A<Number> {
+	void m(Integer g) { System.out.println("nonripple Impl#m(Integer): " + g);}
+	void k(Number g) { System.out.println("Impl#m(Number): " + g); }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics2/in/A.java
new file mode 100644
index 0000000..547d71c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics2/in/A.java
@@ -0,0 +1,21 @@
+package p;
+
+class A<E>{
+    public boolean add(E e) {
+        return true;
+    }
+}
+
+class Sub<E extends Number> extends A<E> {
+    public boolean add(E e) {
+        if (e.doubleValue() > 0)
+            return false;
+        return super.add(e);
+    }
+}
+
+class Unrelated<E> {
+    public boolean add(E e) {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics2/out/A.java
new file mode 100644
index 0000000..4acaf30
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics2/out/A.java
@@ -0,0 +1,21 @@
+package p;
+
+class A<E>{
+    public boolean addIfPositive(E e) {
+        return true;
+    }
+}
+
+class Sub<E extends Number> extends A<E> {
+    public boolean addIfPositive(E e) {
+        if (e.doubleValue() > 0)
+            return false;
+        return super.addIfPositive(e);
+    }
+}
+
+class Unrelated<E> {
+    public boolean add(E e) {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics3/in/A.java
new file mode 100644
index 0000000..e1e8896
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics3/in/A.java
@@ -0,0 +1,38 @@
+package p;
+
+/**
+ * @see #add(Object)
+ * @see Sub#add(Object)
+ * @see Sub#add(Number)
+ * @see Unrelated1#add(Object)
+ * @see Unrelated1#add(Number)
+ * @see Unrelated1#add(Integer)
+ * @see Unrelated3#add(T)
+ */
+class A<T>{
+    public boolean add(T t) {
+        return true;
+    }
+}
+
+class Sub<E extends Number> extends A<E> {
+    public boolean add(E e) {
+        if (e.doubleValue() > 0)
+            return false;
+        return super.add(e);
+    }
+}
+
+class Unrelated1<E extends Number> {
+    public boolean add(E e) {
+        return false;
+    }
+}
+
+interface Unrelated2<E> {
+    boolean add(E e);
+}
+
+interface Unrelated3<T> {
+    boolean add(T t);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics3/out/A.java
new file mode 100644
index 0000000..30e1a15
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics3/out/A.java
@@ -0,0 +1,38 @@
+package p;
+
+/**
+ * @see #addIfPositive(Object)
+ * @see Sub#addIfPositive(Object)
+ * @see Sub#addIfPositive(Number)
+ * @see Unrelated1#add(Object)
+ * @see Unrelated1#add(Number)
+ * @see Unrelated1#add(Integer)
+ * @see Unrelated3#add(T)
+ */
+class A<T>{
+    public boolean addIfPositive(T t) {
+        return true;
+    }
+}
+
+class Sub<E extends Number> extends A<E> {
+    public boolean addIfPositive(E e) {
+        if (e.doubleValue() > 0)
+            return false;
+        return super.addIfPositive(e);
+    }
+}
+
+class Unrelated1<E extends Number> {
+    public boolean add(E e) {
+        return false;
+    }
+}
+
+interface Unrelated2<E> {
+    boolean add(E e);
+}
+
+interface Unrelated3<T> {
+    boolean add(T t);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics4/in/A.java
new file mode 100644
index 0000000..d1a5e41
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics4/in/A.java
@@ -0,0 +1,39 @@
+package p;
+
+/**
+ * @see #takeANumber(Number)
+ * @see Sub#takeANumber(Number)
+ * @see Sub#takeANumber(Number)
+ * @see Unrelated1#takeANumber(Number)
+ * @see Unrelated1#takeANumber(Object)
+ * @see Unrelated1#takeANumber(Number)
+ * @see Unrelated1#takeANumber(Integer)
+ * @see Unrelated2#takeANumber(Number)
+ */
+class A<T>{
+    public boolean takeANumber(Number n) {
+        return true;
+    }
+}
+
+class Sub<E extends Number> extends A<E> {
+    public boolean takeANumber(Number n) {
+        if (n.doubleValue() > 0)
+            return false;
+        return super.takeANumber(n);
+    }
+}
+
+class Unrelated1<E extends Number> {
+    public boolean takeANumber(Number n) {
+        return false;
+    }
+}
+
+interface Unrelated2<E> {
+    boolean takeANumber(Number n);
+}
+
+interface Unrelated3<T> {
+    boolean takeANumber(Number n);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics4/out/A.java
new file mode 100644
index 0000000..80f2c14
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics4/out/A.java
@@ -0,0 +1,39 @@
+package p;
+
+/**
+ * @see #doit(Number)
+ * @see Sub#doit(Number)
+ * @see Sub#doit(Number)
+ * @see Unrelated1#takeANumber(Number)
+ * @see Unrelated1#takeANumber(Object)
+ * @see Unrelated1#takeANumber(Number)
+ * @see Unrelated1#takeANumber(Integer)
+ * @see Unrelated2#takeANumber(Number)
+ */
+class A<T>{
+    public boolean doit(Number n) {
+        return true;
+    }
+}
+
+class Sub<E extends Number> extends A<E> {
+    public boolean doit(Number n) {
+        if (n.doubleValue() > 0)
+            return false;
+        return super.doit(n);
+    }
+}
+
+class Unrelated1<E extends Number> {
+    public boolean takeANumber(Number n) {
+        return false;
+    }
+}
+
+interface Unrelated2<E> {
+    boolean takeANumber(Number n);
+}
+
+interface Unrelated3<T> {
+    boolean takeANumber(Number n);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics5/in/A.java
new file mode 100644
index 0000000..d9fb42e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics5/in/A.java
@@ -0,0 +1,20 @@
+package p;
+
+class A {
+    A covariant() { return null; }
+}
+
+class B extends A {
+    B covariant() { return null; }
+}
+
+class C {
+    /**
+     * @see A#covariant()
+     * @see B#covariant()
+     * @return A#covariant()
+     */
+    A covariant() { 
+        return true ? new A().covariant() : new B().covariant();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics5/out/A.java
new file mode 100644
index 0000000..8615125
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testGenerics5/out/A.java
@@ -0,0 +1,20 @@
+package p;
+
+class A {
+    A variant() { return null; }
+}
+
+class B extends A {
+    B variant() { return null; }
+}
+
+class C {
+    /**
+     * @see A#variant()
+     * @see B#variant()
+     * @return A#covariant()
+     */
+    A covariant() { 
+        return true ? new A().variant() : new B().variant();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testLocal0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testLocal0/in/A.java
new file mode 100644
index 0000000..ed6caf7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testLocal0/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A {
+  void m() {
+  }
+  void baz() {
+  	class B extends A {
+  		void m() {
+  		}
+  		
+  	}
+  }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testLocal0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testLocal0/out/A.java
new file mode 100644
index 0000000..8dfe74b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testLocal0/out/A.java
@@ -0,0 +1,12 @@
+package p;
+class A {
+  void k() {
+  }
+  void baz() {
+  	class B extends A {
+  		void k() {
+  		}
+  		
+  	}
+  }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs1/in/A.java
new file mode 100644
index 0000000..ba9b42d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs1/in/A.java
@@ -0,0 +1,27 @@
+package p;
+
+public class A {
+    public String runall(Runnable[] runnables) {
+        return "A";
+    }
+    
+    public static void main(String[] args) {
+        Runnable r1 = null, r2 = null;
+        System.out.println(new A().runall(new Runnable[] { r1, r2 }));
+        System.out.println(new Sub().runall(new Runnable[] { r1, r2 }));
+        System.out.println(new Sub().runall(r1, r2));
+        System.out.println(new Sub2().runall(new Runnable[] { r1, r2 }));
+    }
+}
+
+class Sub extends A {
+    public String runall(Runnable... runnables) {
+        return "Sub, " + super.runall(runnables);
+    }
+}
+
+class Sub2 extends Sub {
+    public String runall(Runnable[] runnables) {
+        return "Sub2, " + super.runall(runnables);
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs1/out/A.java
new file mode 100644
index 0000000..8968102
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs1/out/A.java
@@ -0,0 +1,27 @@
+package p;
+
+public class A {
+    public String runThese(Runnable[] runnables) {
+        return "A";
+    }
+    
+    public static void main(String[] args) {
+        Runnable r1 = null, r2 = null;
+        System.out.println(new A().runThese(new Runnable[] { r1, r2 }));
+        System.out.println(new Sub().runThese(new Runnable[] { r1, r2 }));
+        System.out.println(new Sub().runThese(r1, r2));
+        System.out.println(new Sub2().runThese(new Runnable[] { r1, r2 }));
+    }
+}
+
+class Sub extends A {
+    public String runThese(Runnable... runnables) {
+        return "Sub, " + super.runThese(runnables);
+    }
+}
+
+class Sub2 extends Sub {
+    public String runThese(Runnable[] runnables) {
+        return "Sub2, " + super.runThese(runnables);
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs2/in/A.java
new file mode 100644
index 0000000..649a770
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs2/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+public class A {
+    /**
+     * @see #m(String)
+     * @see #m(String[])
+     * @see #m(String...)
+     */
+    public void m(String... args) {
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs2/out/A.java
new file mode 100644
index 0000000..b099718
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameVirtualMethodInClass/testVarargs2/out/A.java
@@ -0,0 +1,11 @@
+package p;
+
+public class A {
+    /**
+     * @see #k(String)
+     * @see #k(String[])
+     * @see #k(String...)
+     */
+    public void k(String... args) {
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/A.java
new file mode 100644
index 0000000..10b23af
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/A.java
@@ -0,0 +1,2 @@
+package p;
+class A{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/B.java
new file mode 100644
index 0000000..8a349d2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/B.java
@@ -0,0 +1,2 @@
+package p;
+class B{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/launcher.gif b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/launcher.gif
new file mode 100644
index 0000000..961894a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/launcher.gif
Binary files differ
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/p1/A.java
new file mode 100644
index 0000000..fd8eb8c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ReorgTests/p1/A.java
@@ -0,0 +1,2 @@
+package p1;
+class A{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/test.xml b/testplugins/org.eclipse.jdt.ui.tests.refactoring/test.xml
new file mode 100644
index 0000000..40f3f53
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/test.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="testsuite" default="run" basedir=".">
+	<!-- The property ${eclipse-home} should be passed into this script -->
+	<!-- Set a meaningful default value for when it is not. -->
+	<property name="eclipse-home" value="${basedir}\..\.."/>
+
+	<!-- sets the properties eclipse-home, and library-file -->
+	<property name="plugin-name" value="org.eclipse.jdt.ui.tests.refactoring"/>
+	<property name="library-file"
+            value="${eclipse-home}/plugins/${org.eclipse.test}/library.xml"/>
+
+	<!-- This target holds all initialization code that needs to be done for -->
+	<!-- all tests that are to be run. Initialization for individual tests -->
+	<!-- should be done within the body of the suite target. -->
+	<target name="init">
+		<tstamp/>
+		<delete>
+			<fileset dir="${eclipse-home}" includes="org*.xml"/>
+		</delete>
+	</target>
+
+	<!-- This target defines the tests that need to be run. -->
+	<target name="suite">
+		<property name="refactoring-folder" 
+              value="${eclipse-home}/refactoring_folder"/>
+		<delete dir="${refactoring-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="data-dir" value="${refactoring-folder}"/>
+			<property name="plugin-name" value="${plugin-name}"/>
+			<property name="classname" 
+                value="org.eclipse.jdt.ui.tests.refactoring.all.AllAllRefactoringTests"/>
+		</ant>
+	</target>
+
+	<!-- performance test target -->
+	<target name="performance-suite">
+		<property name="jdt-ui-refactoring-performance-folder" value="${eclipse-home}/jdt_ui_refactoring_performance_folder"/>
+		<property name="data-dir" value="${jdt-ui-refactoring-performance-folder}"/>
+		<property name="plugin-name" value="${plugin-name}"/>
+
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenamePackagePerfTests1"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenamePackagePerfTests2"/>
+		</ant>
+
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameTypePerfAcceptanceTests"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameTypePerfTests1"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameTypePerfTests2"/>
+		</ant>
+
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameMethodPerfTests1"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameMethodPerfTests2"/>
+		</ant>
+
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameMethodWithOverloadPerfTests"/>
+		</ant>
+
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.MoveCompilationUnitPerfTests1"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.MoveCompilationUnitPerfTests2"/>
+		</ant>
+
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.MoveStaticMembersPerfTests1"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.MoveStaticMembersPerfTests2"/>
+		</ant>
+
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true" />
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.type.ExtractInterfacePerfAcceptanceTests" />
+		</ant>
+
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true" />
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.type.ExtractInterfaceHeapAcceptanceTests" />
+		</ant>
+
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true" />
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.IntroduceIndirectionPerfAcceptanceTests" />
+		</ant>
+	</target>
+
+	<!-- This target holds code to cleanup the testing environment after -->
+	<!-- after all of the tests have been run. You can use this target to -->
+	<!-- delete temporary files that have been created. -->
+	<target name="cleanup">
+	</target>
+
+	<!-- This target runs the test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target name="run" depends="init,suite,cleanup">
+		<echo message="OTTest: done running ${plugin-name}"/>
+<!-- ObjectTeams: per-plugin collect not needed.
+		<ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="includes" value="org*.xml"/>
+			<property name="output-file" value="${plugin-name}.xml"/>
+		</ant>
+-->
+	</target>
+
+
+	<!-- This target runs the performance test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target name="performance" depends="init,performance-suite,cleanup">
+		<echo message="OTTest: done performance testing ${plugin-name}"/>
+<!-- ObjectTeams: per-plugin collect not needed.
+		<ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="includes" value="org*.xml"/>
+			<property name="output-file" value="${plugin-name}.xml"/>
+		</ant>
+-->
+	</target>
+</project>
