initial commit in accordance with CQ 3784
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test0_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test0_in.java
new file mode 100644
index 0000000..0a37955
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test0_in.java
@@ -0,0 +1,7 @@
+package p;

+class A{

+	private int f;

+	void m(){

+		int g= f;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test0_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test0_out.java
new file mode 100644
index 0000000..2c46008
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test0_out.java
@@ -0,0 +1,10 @@
+package p;

+class A{

+	private int f;

+	void m(){

+		int g= getF();

+	}

+	private int getF(){

+		return f;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test1_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test1_in.java
new file mode 100644
index 0000000..b00dd07
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test1_in.java
@@ -0,0 +1,7 @@
+package p;

+class A{

+	private int f;

+	void m(){

+		f= 3;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test1_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test1_out.java
new file mode 100644
index 0000000..f166768
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test1_out.java
@@ -0,0 +1,10 @@
+package p;

+class A{

+	private int f;

+	void m(){

+		setF(3);

+	}

+	private void setF(int f){

+		this.f= f;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test2_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test2_in.java
new file mode 100644
index 0000000..a0f3096
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test2_in.java
@@ -0,0 +1,8 @@
+//abstract and make private

+package p;

+class A{

+	public int f;

+	void m(){

+		int g= f;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test2_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test2_out.java
new file mode 100644
index 0000000..3ec4bc3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test2_out.java
@@ -0,0 +1,11 @@
+//abstract and make private

+package p;

+class A{

+	private int f;

+	void m(){

+		int g= f;

+	}

+	public int getF(){

+		return f;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test3_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test3_in.java
new file mode 100644
index 0000000..08a9cad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test3_in.java
@@ -0,0 +1,14 @@
+//abstract and make private

+package p;

+class A{

+	public int f;

+	void m(){

+		int g= f;

+	}

+}

+class B{

+	int m(){

+		A a= new A();

+		return a.f;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test3_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test3_out.java
new file mode 100644
index 0000000..ce9a78a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test3_out.java
@@ -0,0 +1,17 @@
+//abstract and make private

+package p;

+class A{

+	private int f;

+	void m(){

+		int g= getF();

+	}

+	public int getF(){

+		return f;

+	}

+}

+class B{

+	int m(){

+		A a= new A();

+		return a.getF();

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test4_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test4_in.java
new file mode 100644
index 0000000..af410b1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test4_in.java
@@ -0,0 +1,14 @@
+//abstract and make private (do not abstract private accesses)

+package p;

+class A{

+	public int f;

+	void m(){

+		int g= f;

+	}

+}

+class B{

+	int m(){

+		A a= new A();

+		return a.f;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test4_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test4_out.java
new file mode 100644
index 0000000..8ccdfa3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test4_out.java
@@ -0,0 +1,17 @@
+//abstract and make private (do not abstract private accesses)

+package p;

+class A{

+	private int f;

+	void m(){

+		int g= f;

+	}

+	public int getF(){

+		return f;

+	}

+}

+class B{

+	int m(){

+		A a= new A();

+		return a.getF();

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test5_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test5_in.java
new file mode 100644
index 0000000..603871f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test5_in.java
@@ -0,0 +1,15 @@
+//abstract and make private

+package p;

+class A{

+	public int f;

+	void m(){

+		f= f;

+	}

+}

+class B{

+	int m(){

+		A a= new A();

+		a.f= a.f;

+		return a.f;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test5_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test5_out.java
new file mode 100644
index 0000000..65c7709
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/can/A_test5_out.java
@@ -0,0 +1,21 @@
+//abstract and make private

+package p;

+class A{

+	private int f;

+	void m(){

+		setF(getF());

+	}

+	public int getF(){

+		return f;

+	}

+	public void setF(int f){

+		this.f= f;

+	}

+}

+class B{

+	int m(){

+		A a= new A();

+		a.setF(a.getF());

+		return a.getF();

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/cannot/A_testFail0.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/cannot/A_testFail0.java
new file mode 100644
index 0000000..308c8bd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/AbstractField/cannot/A_testFail0.java
@@ -0,0 +1,15 @@
+//abstract and make private, only getter

+package p;

+class A{

+	public int f;

+	void m(){

+		f= f;

+	}

+}

+class B{

+	int m(){

+		A a= new A();

+		a.f= a.f;

+		return a.f;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/.cvsignore b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/.cvsignore
new file mode 100644
index 0000000..1ff0378
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/.cvsignore
@@ -0,0 +1 @@
+.metadata
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/BinaryReference/.classpath b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/BinaryReference/.classpath
new file mode 100644
index 0000000..762b480
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/BinaryReference/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="lib" path="/Reference/bin" sourcepath="/Reference/src"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/Source"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/BinaryReference/.project b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/BinaryReference/.project
new file mode 100644
index 0000000..a7706ac
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/BinaryReference/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>BinaryReference</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/BinaryReference/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/BinaryReference/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..a5f7ddb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/BinaryReference/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Tue Apr 01 17:35:12 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/.classpath b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/.classpath
new file mode 100644
index 0000000..bcacccf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/Source"/>
+<!-- first 2 entries commented out: to run like in tests; active: to write new test code
+-->
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/.project b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/.project
new file mode 100644
index 0000000..6f8513b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Reference</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..a1e5739
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Tue Apr 01 17:29:12 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/src/ref/ReferenceClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/src/ref/ReferenceClass.java
new file mode 100644
index 0000000..391ed12
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/src/ref/ReferenceClass.java
@@ -0,0 +1,18 @@
+package ref;
+
+import source.BaseClass;
+import source.Color;
+import static source.Color.*;
+
+public class ReferenceClass {
+	public static void main(String[] args) {
+		new BaseClass(1).referencedMethod(Color.TURQUOISE);
+		BaseClass.referencedStaticMethod();
+		new BaseClass(1).referencedVirtualMethod();
+		new SubClass(1).referencedVirtualMethod();
+		BaseClass baseClass = new BaseClass(BaseClass.CONST);
+		baseClass.paintColor(true ? Color.RED : GREEN);
+		System.out.println(baseClass.fPublic);
+		new source.sub.InSubPack();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/src/ref/SubClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/src/ref/SubClass.java
new file mode 100644
index 0000000..8519e63
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Reference/src/ref/SubClass.java
@@ -0,0 +1,27 @@
+package ref;
+
+import source.BaseClass;
+import source.Color;
+import source.sub.InSubPack;
+
+public class SubClass extends BaseClass {
+	public SubClass(int count) {
+		super(count + 1);
+		fProtected= 42;
+	}
+
+	protected void baseMethod() {
+		super.baseMethod();
+		referencedVirtualMethod();
+		new InSubPack();
+	}
+	
+	protected int compareTo(BaseClass other) {
+		return +1;
+	}
+	
+	@Override
+	public void paintColor(Color color) {
+		// don't paint
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.classpath b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.classpath
new file mode 100644
index 0000000..8727917
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.cvsignore b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.cvsignore
new file mode 100644
index 0000000..ba077a4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.cvsignore
@@ -0,0 +1 @@
+bin
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.project b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.project
new file mode 100644
index 0000000..f45ee91
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Source</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.settings/org.eclipse.jdt.core.prefs b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..a85c223
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Tue Apr 01 17:28:55 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/src/source/BaseClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/src/source/BaseClass.java
new file mode 100644
index 0000000..c95f586
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/src/source/BaseClass.java
@@ -0,0 +1,29 @@
+package source;
+
+import source.sub.InSubPack;
+
+public class BaseClass {
+	protected int fProtected;
+	public int fPublic;
+	public static final int CONST= 42;
+	public BaseClass(int count) {
+		
+	}
+	
+	protected void baseMethod() {
+		referencedMethod(Color.RED); // keep as first
+		new InSubPack();
+	}
+	
+	protected int compareTo(BaseClass other) {
+		return -1;
+	}
+	
+	public final void referencedMethod(Color c) { }
+	public static int referencedStaticMethod() { return 0; }
+	public void referencedVirtualMethod() { }
+	
+	public void paintColor(Color color) {
+		color.hashCode();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/src/source/Color.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/src/source/Color.java
new file mode 100644
index 0000000..5f7b493
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/src/source/Color.java
@@ -0,0 +1,5 @@
+package source;
+
+public enum Color {
+	RED, GREEN, TURQUOISE
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/src/source/sub/InSubPack.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/src/source/sub/InSubPack.java
new file mode 100644
index 0000000..d416ad4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/BinaryReferencesWorkspace/Source/src/source/sub/InSubPack.java
@@ -0,0 +1,5 @@
+package source.sub;
+
+public class InSubPack {
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test0_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test0_in.java
new file mode 100644
index 0000000..95a0fe5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test0_in.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	private void m(int i, int j){
+	}
+	private void foo(){
+		m(1, 2);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test0_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test0_out.java
new file mode 100644
index 0000000..6b86b75
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test0_out.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	private void m(int j, int i){
+	}
+	private void foo(){
+		m(2, 1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test10_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test10_in.java
new file mode 100644
index 0000000..996a053
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test10_in.java
@@ -0,0 +1,9 @@
+//change to j k i
+package p;
+class A{
+	private void m(int i, int j, int k){
+	}
+	private void foo(){
+		m(1, 2, 3);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test10_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test10_out.java
new file mode 100644
index 0000000..d050502
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test10_out.java
@@ -0,0 +1,9 @@
+//change to j k i
+package p;
+class A{
+	private void m(int j, int k, int i){
+	}
+	private void foo(){
+		m(2, 3, 1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test11_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test11_in.java
new file mode 100644
index 0000000..361a676
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test11_in.java
@@ -0,0 +1,11 @@
+//change to j k i
+package p;
+class A{
+	private void m(int i, int j, int k){
+	}
+	private void foo(){
+		m(3+ 1, 
+			2, 
+				3);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test11_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test11_out.java
new file mode 100644
index 0000000..6abf7f6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test11_out.java
@@ -0,0 +1,11 @@
+//change to j k i
+package p;
+class A{
+	private void m(int j, int k, int i){
+	}
+	private void foo(){
+		m(2, 
+			3, 
+				3+ 1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test12_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test12_in.java
new file mode 100644
index 0000000..f1d6726
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test12_in.java
@@ -0,0 +1,11 @@
+//change to j k i
+package p;
+class A{
+	private void m(int i, int j, int k){
+	}
+	private void foo(){
+		m(19, 
+			/*comment*/2000, 
+				3);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test12_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test12_out.java
new file mode 100644
index 0000000..2cc1236
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test12_out.java
@@ -0,0 +1,11 @@
+//change to j k i
+package p;
+class A{
+	private void m(int j, int k, int i){
+	}
+	private void foo(){
+		m(/*comment*/2000, 
+			3, 
+				19);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test13_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test13_in.java
new file mode 100644
index 0000000..963f2ea
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test13_in.java
@@ -0,0 +1,11 @@
+//change to j k i
+package p;
+class A{
+	private void m(int i, int j, int k){
+	}
+	private void foo(){
+		m(19, 
+			/*comment*/2000, 
+				3/*comment2*/);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test13_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test13_out.java
new file mode 100644
index 0000000..3a83012
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test13_out.java
@@ -0,0 +1,11 @@
+//change to j k i
+package p;
+class A{
+	private void m(int j, int k, int i){
+	}
+	private void foo(){
+		m(/*comment*/2000, 
+			3/*comment2*/, 
+				19);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test14_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test14_in.java
new file mode 100644
index 0000000..b3beea3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test14_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	private int m(int i, int j){
+		return m(m(1, 2), 3);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test14_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test14_out.java
new file mode 100644
index 0000000..1d856cc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test14_out.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	private int m(int j, int i){
+		return m(3, m(2, 1));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test15_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test15_in.java
new file mode 100644
index 0000000..6c68ffb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test15_in.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	private void m(int i, boolean b){
+	}
+	private void foo(){
+		m(2, true);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test15_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test15_out.java
new file mode 100644
index 0000000..b32ad57
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test15_out.java
@@ -0,0 +1,14 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m(boolean,int)} instead
+	 */
+	private void m(int i, boolean b){
+		m(b, i);
+	}
+	private void m(boolean b, int i){
+	}
+	private void foo(){
+		m(true, 2);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test16_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test16_in.java
new file mode 100644
index 0000000..bd03d2f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test16_in.java
@@ -0,0 +1,14 @@
+package p;
+class A{
+	protected void m(int i, boolean b){
+	}
+	private void foo(){
+		m(2, true);
+	}
+}
+class B extends A{
+	protected void m(int j, boolean b){
+		m(6, false);
+		super.m(4, true);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test16_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test16_out.java
new file mode 100644
index 0000000..9a842e2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test16_out.java
@@ -0,0 +1,27 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m(boolean,int)} instead
+	 */
+	protected void m(int i, boolean b){
+		m(b, i);
+	}
+	protected void m(boolean b, int i){
+	}
+	private void foo(){
+		m(true, 2);
+	}
+}
+class B extends A{
+	/**
+	 * @deprecated Use {@link #m(boolean,int)} instead
+	 */
+	protected void m(int j, boolean b){
+		m(b, j);
+	}
+
+	protected void m(boolean b, int j){
+		m(false, 6);
+		super.m(true, 4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test17_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test17_in.java
new file mode 100644
index 0000000..8515e6c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test17_in.java
@@ -0,0 +1,18 @@
+package p;
+
+class A1 implements A{
+	public void m(int i, boolean b){
+	}
+	private void foo(){
+		m(2, true);
+	}
+}
+class B extends A1{
+	public void m(int j, boolean b){
+		m(6, false);
+		super.m(4, true);
+	}
+}
+interface A {
+	public void m(int i, boolean b);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test17_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test17_out.java
new file mode 100644
index 0000000..7cbd521
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test17_out.java
@@ -0,0 +1,36 @@
+package p;
+
+class A1 implements A{
+	/**
+	 * @deprecated Use {@link #m(boolean,int)} instead
+	 */
+	public void m(int i, boolean b){
+		m(b, i);
+	}
+	public void m(boolean b, int i){
+	}
+	private void foo(){
+		m(true, 2);
+	}
+}
+class B extends A1{
+	/**
+	 * @deprecated Use {@link #m(boolean,int)} instead
+	 */
+	public void m(int j, boolean b){
+		m(b, j);
+	}
+
+	public void m(boolean b, int j){
+		m(false, 6);
+		super.m(true, 4);
+	}
+}
+interface A {
+	/**
+	 * @deprecated Use {@link #m(boolean,int)} instead
+	 */
+	public void m(int i, boolean b);
+
+	public void m(boolean b, int i);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test18_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test18_in.java
new file mode 100644
index 0000000..38c7930
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test18_in.java
@@ -0,0 +1,21 @@
+package p;
+
+class A1 implements A{
+	public void m(int i, boolean b){
+	}
+	private void foo(){
+		m(2, true);
+	}
+}
+class B extends A1 implements AA{
+	public void m(int j, boolean b){
+		m(6, false);
+		super.m(4, true);
+	}
+}
+interface A {
+	public void m(int i, boolean b);
+}
+interface AA {
+	public void m(int xxx, boolean yyy);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test18_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test18_out.java
new file mode 100644
index 0000000..f58351e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test18_out.java
@@ -0,0 +1,44 @@
+package p;
+
+class A1 implements A{
+	/**
+	 * @deprecated Use {@link #m(boolean,int)} instead
+	 */
+	public void m(int i, boolean b){
+		m(b, i);
+	}
+	public void m(boolean b, int i){
+	}
+	private void foo(){
+		m(true, 2);
+	}
+}
+class B extends A1 implements AA{
+	/**
+	 * @deprecated Use {@link #m(boolean,int)} instead
+	 */
+	public void m(int j, boolean b){
+		m(b, j);
+	}
+
+	public void m(boolean b, int j){
+		m(false, 6);
+		super.m(true, 4);
+	}
+}
+interface A {
+	/**
+	 * @deprecated Use {@link #m(boolean,int)} instead
+	 */
+	public void m(int i, boolean b);
+
+	public void m(boolean b, int i);
+}
+interface AA {
+	/**
+	 * @deprecated Use {@link #m(boolean,int)} instead
+	 */
+	public void m(int xxx, boolean yyy);
+
+	public void m(boolean yyy, int xxx);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test19_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test19_in.java
new file mode 100644
index 0000000..204f3ef
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test19_in.java
@@ -0,0 +1,5 @@
+package p;
+
+class A {
+	public void m(int i, final boolean b){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test19_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test19_out.java
new file mode 100644
index 0000000..22962a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test19_out.java
@@ -0,0 +1,12 @@
+package p;
+
+class A {
+	/**
+	 * @deprecated Use {@link #m(boolean,int)} instead
+	 */
+	public void m(int i, final boolean b){
+		m(b, i);
+	}
+
+	public void m(final boolean b, int i){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test1_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test1_in.java
new file mode 100644
index 0000000..014a77c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test1_in.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	private void m(int i, int j){
+	}
+	private void foo(){
+		m(1,
+		2);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test1_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test1_out.java
new file mode 100644
index 0000000..a94f00c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test1_out.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	private void m(int j, int i){
+	}
+	private void foo(){
+		m(2,
+		1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test20_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test20_in.java
new file mode 100644
index 0000000..73a860d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test20_in.java
@@ -0,0 +1,5 @@
+package p;
+
+class A {
+	void m(int a, int b[]){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test20_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test20_out.java
new file mode 100644
index 0000000..e8c2db2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test20_out.java
@@ -0,0 +1,12 @@
+package p;
+
+class A {
+	/**
+	 * @deprecated Use {@link #m(int[],int)} instead
+	 */
+	void m(int a, int b[]){
+		m(b, a);
+	}
+
+	void m(int b[], int a){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test21_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test21_in.java
new file mode 100644
index 0000000..57f3cf7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test21_in.java
@@ -0,0 +1,5 @@
+package p;
+
+class A {
+	A(int a, int b){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test21_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test21_out.java
new file mode 100644
index 0000000..8e163ed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test21_out.java
@@ -0,0 +1,5 @@
+package p;
+
+class A {
+	A(int b, int a){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test22_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test22_in.java
new file mode 100644
index 0000000..5973c82
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test22_in.java
@@ -0,0 +1,8 @@
+package p;
+
+class A {
+	A(int a, int b){}
+	A(){
+		this(3, 2);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test22_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test22_out.java
new file mode 100644
index 0000000..27b8cd4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test22_out.java
@@ -0,0 +1,8 @@
+package p;
+
+class A {
+	A(int b, int a){}
+	A(){
+		this(2, 3);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test23_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test23_in.java
new file mode 100644
index 0000000..9f19fe6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test23_in.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+	A(int a, int b){}
+}
+class B extends A{
+	B(){
+		super(4, 6);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test23_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test23_out.java
new file mode 100644
index 0000000..0238f01
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test23_out.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+	A(int b, int a){}
+}
+class B extends A{
+	B(){
+		super(6, 4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test24_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test24_in.java
new file mode 100644
index 0000000..60bcb15
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test24_in.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+	A(int a, int b){}
+	
+	void f(){
+		new A(1, 4){
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test24_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test24_out.java
new file mode 100644
index 0000000..c1f8b6e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test24_out.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+	A(int b, int a){}
+	
+	void f(){
+		new A(4, 1){
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test25_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test25_in.java
new file mode 100644
index 0000000..b55e8ad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test25_in.java
@@ -0,0 +1,12 @@
+package p;
+
+class Outer{
+	class A {
+		A(int a, int b){}
+	}
+}	
+class Outer2 extends Outer.A{
+	Outer2(){
+		new Outer().super(4, 1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test25_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test25_out.java
new file mode 100644
index 0000000..f0db900
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test25_out.java
@@ -0,0 +1,12 @@
+package p;
+
+class Outer{
+	class A {
+		A(int b, int a){}
+	}
+}	
+class Outer2 extends Outer.A{
+	Outer2(){
+		new Outer().super(1, 4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test26_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test26_in.java
new file mode 100644
index 0000000..a3467df
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test26_in.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+	A(int a, int b){}
+	
+	void f(){
+		new A(1, 4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test26_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test26_out.java
new file mode 100644
index 0000000..14b9c22
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test26_out.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+	A(int b, int a){}
+	
+	void f(){
+		new A(4, 1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test27_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test27_in.java
new file mode 100644
index 0000000..4a0f6df
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test27_in.java
@@ -0,0 +1,24 @@
+package p;
+
+class Query {
+	void doit() {
+		Listen listener= null;
+		String msg= "m";
+		Object xml= new Object();;
+		int id= 12;
+		listener.handlePoolMessage( new PoolMessageEvent( msg, xml, id ) );
+	}
+	
+	class PoolMessageEvent {
+		PoolMessageEvent( String msg, Object xml, int id ) {
+			//empty
+		}
+	}
+}
+
+class Listen {
+	public void handlePoolMessage(Query.PoolMessageEvent evt) {
+		Query q= new Query();
+		q.new PoolMessageEvent( null, null, 0 ) ;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test27_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test27_out.java
new file mode 100644
index 0000000..9508692
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test27_out.java
@@ -0,0 +1,31 @@
+package p;
+
+class Query {
+	void doit() {
+		Listen listener= null;
+		String msg= "m";
+		Object xml= new Object();;
+		int id= 12;
+		listener.handlePoolMessage( new PoolMessageEvent( msg, xml, id, null ) );
+	}
+	
+	class PoolMessageEvent {
+		/**
+		 * @deprecated Use {@link #PoolMessageEvent(String,Object,int,Object)} instead
+		 */
+		PoolMessageEvent( String msg, Object xml, int id ) {
+			this(msg, xml, id, null);
+		}
+
+		PoolMessageEvent( String msg, Object xml, int id, Object newParam ) {
+			//empty
+		}
+	}
+}
+
+class Listen {
+	public void handlePoolMessage(Query.PoolMessageEvent evt) {
+		Query q= new Query();
+		q.new PoolMessageEvent( null, null, 0, null ) ;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test2_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test2_in.java
new file mode 100644
index 0000000..fe19e39
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test2_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	private void m(int i, int j){
+		m(i, j);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test2_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test2_out.java
new file mode 100644
index 0000000..083b2b8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test2_out.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	private void m(int j, int i){
+		m(j, i);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test3_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test3_in.java
new file mode 100644
index 0000000..4d7f0c1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test3_in.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	private void m(
+	 int i,
+	 int j){
+		m(i, j);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test3_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test3_out.java
new file mode 100644
index 0000000..9822034
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test3_out.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	private void m(
+	 int j,
+	 int i){
+		m(j, i);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test4_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test4_in.java
new file mode 100644
index 0000000..50b1283
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test4_in.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	private int m(
+	 int i,
+	 int j){
+		return m(m(i, j), 1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test4_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test4_out.java
new file mode 100644
index 0000000..e37883a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test4_out.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	private int m(
+	 int j,
+	 int i){
+		return m(1, m(j, i));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test5_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test5_in.java
new file mode 100644
index 0000000..891cabe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test5_in.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	private void m(
+	 int i,
+	 int j){
+		m(i, 1 + 2);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test5_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test5_out.java
new file mode 100644
index 0000000..5d1b0bc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test5_out.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	private void m(
+	 int j,
+	 int i){
+		m(1 + 2, i);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test6_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test6_in.java
new file mode 100644
index 0000000..02bf8cd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test6_in.java
@@ -0,0 +1,9 @@
+//change to k i j
+package p;
+class A{
+	private void m(int i, int j, int k){
+	}
+	private void foo(){
+		m(1, 2, 3);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test6_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test6_out.java
new file mode 100644
index 0000000..14f2b69
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test6_out.java
@@ -0,0 +1,9 @@
+//change to k i j
+package p;
+class A{
+	private void m(int k, int i, int j){
+	}
+	private void foo(){
+		m(3, 1, 2);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test7_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test7_in.java
new file mode 100644
index 0000000..35017b4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test7_in.java
@@ -0,0 +1,9 @@
+//change to i k j 
+package p;
+class A{
+	private void m(int i, int j, int k){
+	}
+	private void foo(){
+		m(1, 2, 3);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test7_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test7_out.java
new file mode 100644
index 0000000..76e96b6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test7_out.java
@@ -0,0 +1,9 @@
+//change to i k j 
+package p;
+class A{
+	private void m(int i, int k, int j){
+	}
+	private void foo(){
+		m(1, 3, 2);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test8_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test8_in.java
new file mode 100644
index 0000000..4038ea3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test8_in.java
@@ -0,0 +1,9 @@
+//change to k j i 
+package p;
+class A{
+	private void m(int i, int j, int k){
+	}
+	private void foo(){
+		m(1, 2, 3);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test8_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test8_out.java
new file mode 100644
index 0000000..2bf338b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test8_out.java
@@ -0,0 +1,9 @@
+//change to k j i 
+package p;
+class A{
+	private void m(int k, int j, int i){
+	}
+	private void foo(){
+		m(3, 2, 1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test9_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test9_in.java
new file mode 100644
index 0000000..2234f30
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test9_in.java
@@ -0,0 +1,9 @@
+//change to j i k
+package p;
+class A{
+	private void m(int i, int j, int k){
+	}
+	private void foo(){
+		m(1, 2, 3);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test9_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test9_out.java
new file mode 100644
index 0000000..20fac3e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_test9_out.java
@@ -0,0 +1,9 @@
+//change to j i k
+package p;
+class A{
+	private void m(int j, int i, int k){
+	}
+	private void foo(){
+		m(2, 1, 3);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd28_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd28_in.java
new file mode 100644
index 0000000..dbda6a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd28_in.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	private void m(int i){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd28_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd28_out.java
new file mode 100644
index 0000000..029f99b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd28_out.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m(int,int)} instead
+	 */
+	private void m(int i){
+		m(i, 0);
+	}
+
+	private void m(int i, int x){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd29_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd29_in.java
new file mode 100644
index 0000000..dbda6a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd29_in.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	private void m(int i){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd29_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd29_out.java
new file mode 100644
index 0000000..73840a1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd29_out.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m(int,int)} instead
+	 */
+	private void m(int i){
+		m(0, i);
+	}
+
+	private void m(int x, int i){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd30_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd30_in.java
new file mode 100644
index 0000000..ab989d8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd30_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	private void m(int i){
+		m(i);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd30_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd30_out.java
new file mode 100644
index 0000000..73b2fae
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd30_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m(int,int)} instead
+	 */
+	private void m(int i){
+		m(i, 0);
+	}
+
+	private void m(int i, int x){
+		m(i, x);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd31_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd31_in.java
new file mode 100644
index 0000000..203fe15
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd31_in.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	void m(int i){
+		m(i);
+	}
+}
+class B extends A{
+	void m(int j){
+		super.m(j);
+		this.m(j);
+		m(j);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd31_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd31_out.java
new file mode 100644
index 0000000..778200f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd31_out.java
@@ -0,0 +1,27 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m(int,int)} instead
+	 */
+	void m(int i){
+		m(i, 0);
+	}
+
+	void m(int i, int x){
+		m(i, x);
+	}
+}
+class B extends A{
+	/**
+	 * @deprecated Use {@link #m(int,int)} instead
+	 */
+	void m(int j){
+		m(j, 0);
+	}
+
+	void m(int j, int x){
+		super.m(j, x);
+		this.m(j, x);
+		m(j, x);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd32_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd32_in.java
new file mode 100644
index 0000000..ab989d8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd32_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	private void m(int i){
+		m(i);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd32_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd32_out.java
new file mode 100644
index 0000000..25dcf29
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd32_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m(int,int)} instead
+	 */
+	private void m(int i){
+		m(0, i);
+	}
+
+	private void m(int x, int i){
+		m(x, i);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd33_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd33_in.java
new file mode 100644
index 0000000..ca119d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd33_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	private void m(){
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd33_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd33_out.java
new file mode 100644
index 0000000..cf55089
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAdd33_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m(int)} instead
+	 */
+	private void m(){
+		m(0);
+	}
+
+	private void m(int x){
+		m(x);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddRecursive1_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddRecursive1_in.java
new file mode 100644
index 0000000..c80f69d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddRecursive1_in.java
@@ -0,0 +1,33 @@
+package p;
+
+class A {
+	int i;
+	void m(int i) {this.i = i;}
+}
+class Super extends A {
+	void m(int i) { super.m(1); }
+}
+class Recursive extends A {
+	void m(int i) { if (true) m(i); }
+}
+class ThisRecursive extends A {
+	void m(int i) { this.m(i); }
+}
+class AlmostRecursive extends A {
+	void m(int i) { new A().m(i); }
+}
+class RecursiveOrNot extends A {
+	void m(int i) { new RecursiveOrNot().m(i); }
+}
+class NonRecursive extends A {
+	void m(int i) { int k= i; }
+}
+class Calling extends A {
+	void bar() { m(17); }
+}
+class Calling2 {
+	void bar() { new A().m(17); }
+}
+class Calling3 {
+	void bar() { new Recursive().m(17); }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddRecursive1_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddRecursive1_out.java
new file mode 100644
index 0000000..4a843ec
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddRecursive1_out.java
@@ -0,0 +1,81 @@
+package p;
+
+class A {
+	int i;
+	/**
+	 * @deprecated Use {@link #m(int,boolean)} instead
+	 */
+	void m(int i) {
+		m(i, true);
+	}
+	void m(int i, boolean bool) {this.i = i;}
+}
+class Super extends A {
+	/**
+	 * @deprecated Use {@link #m(int,boolean)} instead
+	 */
+	void m(int i) {
+		m(i, true);
+	}
+
+	void m(int i, boolean bool) { super.m(1, bool); }
+}
+class Recursive extends A {
+	/**
+	 * @deprecated Use {@link #m(int,boolean)} instead
+	 */
+	void m(int i) {
+		m(i, true);
+	}
+
+	void m(int i, boolean bool) { if (true) m(i, bool); }
+}
+class ThisRecursive extends A {
+	/**
+	 * @deprecated Use {@link #m(int,boolean)} instead
+	 */
+	void m(int i) {
+		m(i, true);
+	}
+
+	void m(int i, boolean bool) { this.m(i, bool); }
+}
+class AlmostRecursive extends A {
+	/**
+	 * @deprecated Use {@link #m(int,boolean)} instead
+	 */
+	void m(int i) {
+		m(i, true);
+	}
+
+	void m(int i, boolean bool) { new A().m(i, true); }
+}
+class RecursiveOrNot extends A {
+	/**
+	 * @deprecated Use {@link #m(int,boolean)} instead
+	 */
+	void m(int i) {
+		m(i, true);
+	}
+
+	void m(int i, boolean bool) { new RecursiveOrNot().m(i, bool); }
+}
+class NonRecursive extends A {
+	/**
+	 * @deprecated Use {@link #m(int,boolean)} instead
+	 */
+	void m(int i) {
+		m(i, true);
+	}
+
+	void m(int i, boolean bool) { int k= i; }
+}
+class Calling extends A {
+	void bar() { m(17, true); }
+}
+class Calling2 {
+	void bar() { new A().m(17, true); }
+}
+class Calling3 {
+	void bar() { new Recursive().m(17, true); }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddReorderRename34_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddReorderRename34_in.java
new file mode 100644
index 0000000..dd3f8c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddReorderRename34_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	private int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddReorderRename34_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddReorderRename34_out.java
new file mode 100644
index 0000000..0250498
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddReorderRename34_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m(boolean,Object,int)} instead
+	 */
+	private int m(int iii, boolean j){
+		return m(j, null, iii);
+	}
+
+	private int m(boolean jj, Object x, int i){
+		return m(false, x, m(jj, x, i));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_Ref_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_Ref_in.java
new file mode 100644
index 0000000..61c50b7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_Ref_in.java
@@ -0,0 +1,7 @@
+package p;
+
+class Ref {
+    void m() {
+            new A().m(("a"); // missing )
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_Ref_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_Ref_out.java
new file mode 100644
index 0000000..5b04d32
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_Ref_out.java
@@ -0,0 +1,7 @@
+package p;
+
+class Ref {
+    void m() {
+            new A().m(("a"), null; // missing )
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_in.java
new file mode 100644
index 0000000..9513cf5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_in.java
@@ -0,0 +1,5 @@
+package p;
+
+class A {
+    public void m(String node) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_out.java
new file mode 100644
index 0000000..e9ab8c6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAddSyntaxError01_out.java
@@ -0,0 +1,5 @@
+package p;
+
+class A {
+    public void m(String node, Object newParam) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll35_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll35_in.java
new file mode 100644
index 0000000..2a9c8b4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll35_in.java
@@ -0,0 +1,7 @@
+package p;
+//only visibility change - to public
+class A{
+	private int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll35_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll35_out.java
new file mode 100644
index 0000000..cc2fa7b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll35_out.java
@@ -0,0 +1,7 @@
+package p;
+//only visibility change - to public
+class A{
+	public int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll36_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll36_in.java
new file mode 100644
index 0000000..7ee41c8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll36_in.java
@@ -0,0 +1,7 @@
+package p;
+//only visibility change - to private
+class A{
+	public int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll36_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll36_out.java
new file mode 100644
index 0000000..2ef5a29
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll36_out.java
@@ -0,0 +1,7 @@
+package p;
+//only visibility change - to private
+class A{
+	private int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll37_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll37_in.java
new file mode 100644
index 0000000..a847439
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll37_in.java
@@ -0,0 +1,12 @@
+package p;
+//to protected
+class A{
+	public int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
+class B extends A{
+	public int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll37_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll37_out.java
new file mode 100644
index 0000000..df49d85
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll37_out.java
@@ -0,0 +1,12 @@
+package p;
+//to protected
+class A{
+	protected int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
+class B extends A{
+	protected int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll38_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll38_in.java
new file mode 100644
index 0000000..1fb09e8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll38_in.java
@@ -0,0 +1,12 @@
+package p;
+//to protected
+class A{
+	int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
+class B extends A{
+	public int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll38_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll38_out.java
new file mode 100644
index 0000000..00f60b6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll38_out.java
@@ -0,0 +1,12 @@
+package p;
+//to protected
+class A{
+	protected int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
+class B extends A{
+	public int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll39_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll39_in.java
new file mode 100644
index 0000000..f4e0509
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll39_in.java
@@ -0,0 +1,12 @@
+package p;
+//to public
+class A{
+	protected int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
+class B extends A{
+	protected int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll39_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll39_out.java
new file mode 100644
index 0000000..2f3c016
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll39_out.java
@@ -0,0 +1,12 @@
+package p;
+//to public
+class A{
+	public int m(boolean jj, Object x, int i){
+		return m(false, x, m(jj, x, i));
+	}
+}
+class B extends A{
+	public int m(boolean jj, Object x, int i){
+		return m(false, x, m(jj, x, i));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll40_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll40_in.java
new file mode 100644
index 0000000..f4e0509
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll40_in.java
@@ -0,0 +1,12 @@
+package p;
+//to public
+class A{
+	protected int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
+class B extends A{
+	protected int m(int iii, boolean j){
+		return m(m(iii, j), false);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll40_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll40_out.java
new file mode 100644
index 0000000..33960fe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll40_out.java
@@ -0,0 +1,12 @@
+package p;
+//to public
+class A{
+	public int m(boolean jj, int[] x, int i){
+		return m(false, x, m(jj, x, i));
+	}
+}
+class B extends A{
+	public int m(boolean jj, int[] x, int i){
+		return m(false, x, m(jj, x, i));
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll41_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll41_in.java
new file mode 100644
index 0000000..1b30b89
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll41_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void m(int i){
+		m(0);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll41_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll41_out.java
new file mode 100644
index 0000000..d4565c7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll41_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m()} instead
+	 */
+	void m(int i){
+		m();
+	}
+
+	void m(){
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll42_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll42_in.java
new file mode 100644
index 0000000..1b30b89
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll42_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void m(int i){
+		m(0);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll42_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll42_out.java
new file mode 100644
index 0000000..6935d8c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll42_out.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void m(int i){
+		m(i);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll43_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll43_in.java
new file mode 100644
index 0000000..9e42322
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll43_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void m(int i, int j){
+		m(0, 1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll43_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll43_out.java
new file mode 100644
index 0000000..33c9ec9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll43_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m(int)} instead
+	 */
+	void m(int i, int j){
+		m(j);
+	}
+
+	void m(int j){
+		m(1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll44_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll44_in.java
new file mode 100644
index 0000000..9e42322
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll44_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void m(int i, int j){
+		m(0, 1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll44_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll44_out.java
new file mode 100644
index 0000000..4981e57
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll44_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	boolean m(int j){
+		m(1);
+	}
+
+	/**
+	 * @deprecated use instead m(int j)
+	 */
+	public void m(int i, int j) {
+		m(j);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll45_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll45_in.java
new file mode 100644
index 0000000..9e42322
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll45_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void m(int i, int j){
+		m(0, 1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll45_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll45_out.java
new file mode 100644
index 0000000..7090598
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll45_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	void m(boolean j){
+		m(1);
+	}
+
+	/**
+	 * @deprecated use instead m(boolean j)
+	 */
+	public void m(int i, int j) {
+		m(j); // but what if the other direction - was value, now void?
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll46_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll46_in.java
new file mode 100644
index 0000000..8a28c5e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll46_in.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	A(){
+	}
+	void f(){
+		new A();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll46_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll46_out.java
new file mode 100644
index 0000000..00fbc25
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll46_out.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	A(int i){
+	}
+	void f(){
+		new A(1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll47_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll47_in.java
new file mode 100644
index 0000000..9badbb3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll47_in.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	A(){
+	}
+	void f(){
+		new A(){};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll47_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll47_out.java
new file mode 100644
index 0000000..3d941b8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll47_out.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	A(int i){
+	}
+	void f(){
+		new A(1){};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll48_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll48_in.java
new file mode 100644
index 0000000..51c75de
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll48_in.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	A(){
+	}
+}
+class B extends A{
+	B(){
+		super();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll48_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll48_out.java
new file mode 100644
index 0000000..a475abd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll48_out.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	A(int i){
+	}
+}
+class B extends A{
+	B(){
+		super(1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll49_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll49_in.java
new file mode 100644
index 0000000..cac6cfd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll49_in.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	A(){
+	}
+}
+class B extends A{
+	B(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll49_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll49_out.java
new file mode 100644
index 0000000..a475abd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll49_out.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	A(int i){
+	}
+}
+class B extends A{
+	B(){
+		super(1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll50_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll50_in.java
new file mode 100644
index 0000000..be34b7a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll50_in.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	A(){
+	}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll50_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll50_out.java
new file mode 100644
index 0000000..acbf6d4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll50_out.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	A(int i){
+	}
+}
+class B extends A{
+
+	B() {
+		super(1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll51_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll51_in.java
new file mode 100644
index 0000000..2d95523
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll51_in.java
@@ -0,0 +1,15 @@
+package p;
+class F{
+	class A{
+		A(){
+		}
+	}
+}
+class X extends F.A{
+	X(){
+		new F().super();
+		new F().new A();
+		new F().new A(){};
+		new F(){}.new A(){};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll51_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll51_out.java
new file mode 100644
index 0000000..8e1711c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll51_out.java
@@ -0,0 +1,15 @@
+package p;
+class F{
+	class A{
+		A(int i){
+		}
+	}
+}
+class X extends F.A{
+	X(){
+		new F().super(1);
+		new F().new A(1);
+		new F().new A(1){};
+		new F(){}.new A(1){};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll52_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll52_in.java
new file mode 100644
index 0000000..c3d7a1e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll52_in.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+	A(){
+	}
+}
+class B extends A{
+	B(){
+		this(3);
+	}
+	B(int y){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll52_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll52_out.java
new file mode 100644
index 0000000..0189181
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll52_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	A(int i){
+	}
+}
+class B extends A{
+	B(){
+		this(3);
+	}
+	B(int y){
+		super(1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll53_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll53_in.java
new file mode 100644
index 0000000..c449e33
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll53_in.java
@@ -0,0 +1,7 @@
+//change type of a to HashSet
+package p;
+
+class A {
+	void m(int a){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll53_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll53_out.java
new file mode 100644
index 0000000..343f333
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll53_out.java
@@ -0,0 +1,9 @@
+//change type of a to HashSet
+package p;
+
+import java.util.HashSet;
+
+class A {
+	void m(HashSet a){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll54_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll54_in.java
new file mode 100644
index 0000000..6978f8f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll54_in.java
@@ -0,0 +1,9 @@
+//change type of a to List
+package p;
+
+import java.util.List;
+
+class A {
+	void m(int a){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll54_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll54_out.java
new file mode 100644
index 0000000..a5d24a5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll54_out.java
@@ -0,0 +1,9 @@
+//change type of a to List
+package p;
+
+import java.util.List;
+
+class A {
+	void m(List a){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll55_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll55_in.java
new file mode 100644
index 0000000..9752d75
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll55_in.java
@@ -0,0 +1,8 @@
+package p;//add boolean e before d
+
+class A {
+	public void m(Object[] b, int c, boolean d) {
+		m(new Object[] { }, Integer.MAX_VALUE, false);
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll55_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll55_out.java
new file mode 100644
index 0000000..2a387e1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll55_out.java
@@ -0,0 +1,8 @@
+package p;//add boolean e before d
+
+class A {
+	public void m(Object[] b, int c, boolean e, boolean d) {
+		m(new Object[] { }, Integer.MAX_VALUE, e, false);
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll56_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll56_in.java
new file mode 100644
index 0000000..08690e5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll56_in.java
@@ -0,0 +1,19 @@
+package p; //remove 'part'
+
+import java.util.Vector;
+
+class HistoryFrame extends Vector {
+
+	public HistoryFrame(EvaViewPart part, int title) {
+
+		super(title);
+
+	}
+}
+class EvaViewPart {
+
+	private void showJFreeChartFrame() {
+		HistoryFrame frame= new HistoryFrame(this, 5);
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll56_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll56_out.java
new file mode 100644
index 0000000..b051dd7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll56_out.java
@@ -0,0 +1,19 @@
+package p; //remove 'part'
+
+import java.util.Vector;
+
+class HistoryFrame extends Vector {
+
+	public HistoryFrame(int title) {
+
+		super(title);
+
+	}
+}
+class EvaViewPart {
+
+	private void showJFreeChartFrame() {
+		HistoryFrame frame= new HistoryFrame(5);
+	}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll57_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll57_in.java
new file mode 100644
index 0000000..745c608
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll57_in.java
@@ -0,0 +1,22 @@
+package p; //swap hello and goodbye
+
+class TEST
+{
+   public interface X
+   {
+	  public void method(final int i, String hello, final String goodbye);
+   }
+   
+   private static X x = new X()
+	{
+	   public void method(final int i, String hello, final String goodbye)
+	   {
+		  System.err.println(hello + goodbye);
+	   }
+	};
+   
+   public static void main(String[] args)
+   {
+	  x.method(1, "hello", "goodbye");
+   }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll57_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll57_out.java
new file mode 100644
index 0000000..c7202fb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll57_out.java
@@ -0,0 +1,22 @@
+package p; //swap hello and goodbye
+
+class TEST
+{
+   public interface X
+   {
+	  public void method(final int i, final String goodbye, String hello);
+   }
+   
+   private static X x = new X()
+	{
+	   public void method(final int i, final String goodbye, String hello)
+	   {
+		  System.err.println(hello + goodbye);
+	   }
+	};
+   
+   public static void main(String[] args)
+   {
+	  x.method(1, "goodbye", "hello");
+   }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll58_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll58_in.java
new file mode 100644
index 0000000..8c8c4bd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll58_in.java
@@ -0,0 +1,25 @@
+package p;
+
+abstract class A {
+	/**
+	 * @param a an a
+	 * @param b bee
+	 * @return the number
+	 * @see #m(int, String[][][])
+	 */
+	public abstract int m(int a, String[] b[][]);
+}
+class B extends A {
+	public int m(int number, String[] b[][]) {
+		return number + 0;
+	}
+}
+class C extends B {
+	/**
+	 * @param a an a
+	 * @param b bee
+	 */
+	public int m(int a, String[] strings[][]) {
+		return a + 17;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll58_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll58_out.java
new file mode 100644
index 0000000..4b6ae9b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll58_out.java
@@ -0,0 +1,25 @@
+package p;
+
+abstract class A {
+	/**
+	 * @param bbb bee
+	 * @param abb an a
+	 * @return the number
+	 * @see #m(String[][][], int)
+	 */
+	public abstract int m(String[] bbb[][], int abb);
+}
+class B extends A {
+	public int m(String[] bbb[][], int number) {
+		return number + 0;
+	}
+}
+class C extends B {
+	/**
+	 * @param bbb bee
+	 * @param abb an a
+	 */
+	public int m(String[] strings[][], int abb) {
+		return abb + 17;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll59_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll59_in.java
new file mode 100644
index 0000000..9747b21
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll59_in.java
@@ -0,0 +1,36 @@
+package p;
+import java.util.*;
+class A {
+	/**
+	 * @param from 1st param of {@link A#getList(int, long) me}
+	 * @see getList
+	 * @see #getList(int, long)
+	 * @see #getList(int from, tho long)
+	 * @see #getList(int from, long tho)
+	 * @param to
+	 * @return list
+	 * @param bogus{@link #getList}
+	 */
+	public ArrayList getList(int from, long to) {
+		return new ArrayList((int)to-from);
+	}
+	
+	/** start here
+	 * Doesn't call {@linkplain #getList(int, long)}
+	 *
+	 * @see getList
+	 * @see #getList
+	 * @see A#getList(int, long)
+	 * @see A#getList(int, long, Object[][])
+	 * @see A#getList (
+	 *   int fro,long tho
+	 * )
+	 * @see #getList(..)
+	 * @see p.A#getList(int, int, boolean)
+	 * @see <a href="spec.html#section">Java Spec</a>
+	 * @see A# getList(int, long)
+	 */
+	public ArrayList getList(int from, long to, Object[] arr[]) {
+		return new ArrayList(Arrays.asList(arr).subList(from, (int)to));
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll59_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll59_out.java
new file mode 100644
index 0000000..5201b8a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll59_out.java
@@ -0,0 +1,37 @@
+package p;
+import java.util.*;
+class A {
+	/**
+	 * @param really TODO
+	 * @param f 1st param of {@link A#getList(boolean, int, char) me}
+	 * @param t
+	 * @see getList
+	 * @see #getList(boolean, int, char)
+	 * @see #getList(int from, tho long)
+	 * @see #getList(boolean really, int f, char t)
+	 * @return list
+	 * @param bogus{@link #getList}
+	 */
+	public List getList(boolean really, int f, char t) {
+		return new ArrayList((int)t-f);
+	}
+	
+	/** start here
+	 * Doesn't call {@linkplain #getList(boolean, int, char)}
+	 *
+	 * @see getList
+	 * @see #getList
+	 * @see A#getList(boolean, int, char)
+	 * @see A#getList(int, long, Object[][])
+	 * @see A#getList (
+	 *   boolean really,int f, char t
+	 * )
+	 * @see #getList(..)
+	 * @see p.A#getList(int, int, boolean)
+	 * @see <a href="spec.html#section">Java Spec</a>
+	 * @see A# getList(boolean, int, char)
+	 */
+	public ArrayList getList(int from, long to, Object[] arr[]) {
+		return new ArrayList(Arrays.asList(arr).subList(from, (int)to));
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll60_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll60_in.java
new file mode 100644
index 0000000..1975343
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll60_in.java
@@ -0,0 +1,44 @@
+package p;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+
+class A {
+	/**
+	 * @param to {@link #getList}
+	 * @version throwaway
+	 * @param from 1st param of {@link A#getList(int, long) me}
+	 * @see #getList(int, long)
+	 * @param from 2nd
+	 * @see #getList(int from, long tho)
+	 * @param to
+	 * @throws java.io.IOException
+	 * @return the list
+	 * @throws IOException
+	 */
+	public ArrayList getList(int from, long to) throws IOException {
+		//change to: java.util.List getList(long tho, List l, int to) throws Exception
+		// (swap parameters, insert new in between, change return type, change Ex.)
+		return new ArrayList((int)to-from);
+	}
+}
+
+interface I {
+	public ArrayList getList(int from, long to) throws java.io.IOException;
+}
+
+interface J {
+	/** Doc: @param t t */
+	public ArrayList getList(int f, long t) throws FileNotFoundException;
+}
+
+class B extends A implements I, J {
+	/**
+	 * @return {@inheritDoc} 
+	 * @see p.A#getList(int, long)
+	 */
+	public ArrayList getList(int from, long to) throws FileNotFoundException {
+		return new ArrayList() {};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll60_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll60_out.java
new file mode 100644
index 0000000..7665801
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll60_out.java
@@ -0,0 +1,46 @@
+package p;
+
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+	/**
+	 * @param tho {@link #getList}
+	 * @param tho
+	 * @param l TODO
+	 * @param to 1st param of {@link A#getList(long, List, int) me}
+	 * @param to 2nd
+	 * @version throwaway
+	 * @throws Exception TODO
+	 * @see #getList(long, List, int)
+	 * @see #getList(long tho, List l, int to)
+	 * @return the list
+	 */
+	public List getList(long tho, List l, int to) throws Exception {
+		//change to: java.util.List getList(long tho, List l, int to) throws Exception
+		// (swap parameters, insert new in between, change return type, change Ex.)
+		return new ArrayList((int)tho-to);
+	}
+}
+
+interface I {
+	public List getList(long tho, List l, int to) throws Exception;
+}
+
+interface J {
+	/** Doc: @param t t 
+	 * @param l TODO
+	 * @throws Exception TODO*/
+	public List getList(long t, List l, int f) throws FileNotFoundException, Exception;
+}
+
+class B extends A implements I, J {
+	/**
+	 * @return {@inheritDoc} 
+	 * @see p.A#getList(long, List, int)
+	 */
+	public List getList(long tho, List l, int to) throws FileNotFoundException, Exception {
+		return new ArrayList() {};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll61_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll61_in.java
new file mode 100644
index 0000000..f175006
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll61_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	Object m()[]{
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll61_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll61_out.java
new file mode 100644
index 0000000..57d6693
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll61_out.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	Object m(){
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll62_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll62_in.java
new file mode 100644
index 0000000..f7baa55
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll62_in.java
@@ -0,0 +1,7 @@
+package p;
+
+import java.math.BigInteger;
+
+class A {
+	void m(BigInteger/*64*/a/*xxx*/, BigInteger /*64*/b /*xxx*/, BigInteger/*64*/ c/*xxx*/) { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll62_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll62_out.java
new file mode 100644
index 0000000..6d57345
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll62_out.java
@@ -0,0 +1,6 @@
+package p;
+
+
+class A {
+	void m(long/*64*/x/*xxx*/, long /*64*/y /*xxx*/, long/*64*/ z/*xxx*/) { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll63_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll63_in.java
new file mode 100644
index 0000000..0f8422e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll63_in.java
@@ -0,0 +1,12 @@
+package p;
+
+class A {
+    void m() { }
+}
+class Sub extends A {
+    @Override
+    void m() { }
+}
+class Sub2 extends A {
+    @Override @Deprecated void m() { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll63_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll63_out.java
new file mode 100644
index 0000000..0fd8337
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll63_out.java
@@ -0,0 +1,14 @@
+package p;
+
+class A {
+    protected void m() { }
+}
+class Sub extends A {
+    @Override
+	protected
+    void m() { }
+}
+class Sub2 extends A {
+    @Override @Deprecated
+	protected void m() { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll64_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll64_in.java
new file mode 100644
index 0000000..bdda6c0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll64_in.java
@@ -0,0 +1,20 @@
+package p;
+
+class A {
+	void m() {
+		new Runnable() {
+			public void run() {
+				new Cloneable() {
+					public Object clone() {
+						nasty("a", new Local());
+						return null;
+					}
+					class Local {}
+					private void nasty(String name, Local i) {
+						
+					}
+				};
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll64_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll64_out.java
new file mode 100644
index 0000000..cdbb452
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testAll64_out.java
@@ -0,0 +1,22 @@
+package p;
+
+import java.util.List;
+
+class A {
+	void m() {
+		new Runnable() {
+			public void run() {
+				new Cloneable() {
+					public Object clone() {
+						nasty(new Local(), null);
+						return null;
+					}
+					class Local {}
+					private void nasty(Local i, List<Local> list) {
+						
+					}
+				};
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate01_in.java
new file mode 100644
index 0000000..1fca8b2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate01_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	private void m(int i, String j) {
+		m(i, j);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate01_out.java
new file mode 100644
index 0000000..3185f11
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate01_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	/**
+	 * @deprecated Use {@link #m(String,int)} instead
+	 */
+	private void m(int i, String j) {
+		m(j, i);
+	}
+
+	private void m(String j, int i) {
+		m(j, i);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate02_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate02_in.java
new file mode 100644
index 0000000..de43f42
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate02_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	private void m() {
+		m();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate02_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate02_out.java
new file mode 100644
index 0000000..433ec80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate02_out.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.List;
+
+class A{
+	/**
+	 * @deprecated Use {@link #m(List)} instead
+	 */
+	private void m() {
+		m(null);
+	}
+
+	private void m(List list) {
+		m(list);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate03_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate03_in.java
new file mode 100644
index 0000000..8216e75
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate03_in.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.List;
+
+class A{
+	private void m(int i, String j) {
+		List l;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate03_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate03_out.java
new file mode 100644
index 0000000..4fd1cc1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate03_out.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.List;
+
+class A{
+	/**
+	 * @deprecated Use {@link #m(String,int)} instead
+	 */
+	private void m(int i, String j) {
+		m(j, i);
+	}
+
+	private void m(String j, int i) {
+		List l;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate04_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate04_in.java
new file mode 100644
index 0000000..580ca4e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate04_in.java
@@ -0,0 +1,8 @@
+package p;
+
+import java.util.List;
+
+class A{
+	private void m(List l) {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate04_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate04_out.java
new file mode 100644
index 0000000..eed2965
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate04_out.java
@@ -0,0 +1,15 @@
+package p;
+
+import java.util.List;
+
+class A{
+	/**
+	 * @deprecated Use {@link #m()} instead
+	 */
+	private void m(List l) {
+		m();
+	}
+
+	private void m() {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate05_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate05_in.java
new file mode 100644
index 0000000..3809971
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate05_in.java
@@ -0,0 +1,8 @@
+package p;
+
+class A {
+	void m() {}
+	void ref() {
+		m();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate05_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate05_out.java
new file mode 100644
index 0000000..d6d7569
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testDelegate05_out.java
@@ -0,0 +1,14 @@
+package p;
+
+class A {
+	/**
+	 * @deprecated Use {@link #renamed()} instead
+	 */
+	void m() {
+		renamed();
+	}
+	void renamed() {}
+	void ref() {
+		renamed();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum01_in.java
new file mode 100644
index 0000000..2d6bdea
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum01_in.java
@@ -0,0 +1,11 @@
+package p;
+
+/**
+ * @see #A(int)
+ * @see A#A(int)
+ */
+enum A {
+    A(1), B(2) { }
+   	;
+    A(int i) { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum01_out.java
new file mode 100644
index 0000000..6943d28
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum01_out.java
@@ -0,0 +1,11 @@
+package p;
+
+/**
+ * @see #A(int, int)
+ * @see A#A(int, int)
+ */
+enum A {
+    A(1, 17), B(2, 17) { }
+   	;
+    private A(int i, int a) { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum02_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum02_in.java
new file mode 100644
index 0000000..01c1859
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum02_in.java
@@ -0,0 +1,11 @@
+package p;
+
+/**
+ * @see #A_testEnum02_in(int)
+ * @see A_testEnum02_in#A_testEnum02_in(int)
+ */
+enum A_testEnum02_in {
+    A(1), B(2) { }
+   	;
+   	A_testEnum02_in(int i) { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum02_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum02_out.java
new file mode 100644
index 0000000..b58968c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum02_out.java
@@ -0,0 +1,11 @@
+package p;
+
+/**
+ * @see #A_testEnum02_in(int, int)
+ * @see A_testEnum02_in#A_testEnum02_in(int, int)
+ */
+enum A_testEnum02_in {
+    A(1, 17), B(2, 17) { }
+   	;
+   	private A_testEnum02_in(int i, int a) { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum03_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum03_in.java
new file mode 100644
index 0000000..6263a13
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum03_in.java
@@ -0,0 +1,14 @@
+package p;
+
+/**
+ * @see #A
+ * @see #A()
+ * @see A#A
+ * @see A#A()
+ */
+enum A {
+    A(1), B(2) { }, C, D(), E { }, F() { }
+   	;
+   	A() {}
+    A(int i) { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum03_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum03_out.java
new file mode 100644
index 0000000..dee6dac
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum03_out.java
@@ -0,0 +1,14 @@
+package p;
+
+/**
+ * @see #A
+ * @see #A(Object)
+ * @see A#A
+ * @see A#A(Object)
+ */
+enum A {
+    A(1), B(2) { }, C(null), D(null), E(null) { }, F(null) { }
+   	;
+   	A(Object obj) {}
+    A(int i) { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum04_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum04_in.java
new file mode 100644
index 0000000..82aaccb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum04_in.java
@@ -0,0 +1,18 @@
+package p;
+
+class Outer {
+	enum A {
+		GREEN, DARK_GREEN, BLACK;
+		A getNext() {
+			switch (this) {
+				case GREEN : return DARK_GREEN;
+				case DARK_GREEN : return BLACK;
+				case BLACK : return GREEN;
+				default : return null;
+			}
+		}
+	}
+	{
+		A a= A.GREEN.getNext();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum04_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum04_out.java
new file mode 100644
index 0000000..cfc0d21
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testEnum04_out.java
@@ -0,0 +1,18 @@
+package p;
+
+class Outer {
+	enum A {
+		GREEN, DARK_GREEN, BLACK;
+		public A getNext(boolean forward) {
+			switch (this) {
+				case GREEN : return DARK_GREEN;
+				case DARK_GREEN : return BLACK;
+				case BLACK : return GREEN;
+				default : return null;
+			}
+		}
+	}
+	{
+		A a= A.GREEN.getNext(true);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException01_in.java
new file mode 100644
index 0000000..ff2e8c1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException01_in.java
@@ -0,0 +1,25 @@
+package p;
+
+import java.io.IOException;
+
+abstract class A {
+	public abstract int m(long l) throws IOException;
+}
+
+class B extends A {
+	public int m(long l) throws IOException {
+		return 17;
+	}
+	public int m(int i) {
+		return i;
+	}
+}
+
+class C extends B {
+}
+
+class D extends A {
+	public int m(long l) {
+		return 0;
+	}
+}	
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException01_out.java
new file mode 100644
index 0000000..fb302a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException01_out.java
@@ -0,0 +1,26 @@
+package p;
+
+import java.io.IOException;
+import java.util.zip.ZipException;
+
+abstract class A {
+	public abstract int m(long l) throws IOException, ZipException;
+}
+
+class B extends A {
+	public int m(long l) throws IOException, ZipException {
+		return 17;
+	}
+	public int m(int i) {
+		return i;
+	}
+}
+
+class C extends B {
+}
+
+class D extends A {
+	public int m(long l) throws ZipException {
+		return 0;
+	}
+}	
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException02_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException02_in.java
new file mode 100644
index 0000000..ad60d61
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException02_in.java
@@ -0,0 +1,10 @@
+package p;
+
+abstract class A {
+	public abstract void m();
+}
+
+class B extends A {
+	public int m() throws Illegal {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException02_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException02_out.java
new file mode 100644
index 0000000..afdae8e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException02_out.java
@@ -0,0 +1,10 @@
+package p;
+
+abstract class A {
+	public abstract void m() throws RuntimeException;
+}
+
+class B extends A {
+	public int m() throws Illegal, RuntimeException {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException03_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException03_in.java
new file mode 100644
index 0000000..afdae8e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException03_in.java
@@ -0,0 +1,10 @@
+package p;
+
+abstract class A {
+	public abstract void m() throws RuntimeException;
+}
+
+class B extends A {
+	public int m() throws Illegal, RuntimeException {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException03_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException03_out.java
new file mode 100644
index 0000000..ad60d61
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException03_out.java
@@ -0,0 +1,10 @@
+package p;
+
+abstract class A {
+	public abstract void m();
+}
+
+class B extends A {
+	public int m() throws Illegal {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException04_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException04_in.java
new file mode 100644
index 0000000..8c6e82a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException04_in.java
@@ -0,0 +1,10 @@
+package p;
+
+abstract class A {
+	public abstract void m();
+}
+
+class B extends A {
+	public int m() throws RuntimeException {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException04_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException04_out.java
new file mode 100644
index 0000000..924aa89
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException04_out.java
@@ -0,0 +1,12 @@
+package p;
+
+import java.io.IOException;
+
+abstract class A {
+	public abstract void m() throws IOException, ClassNotFoundException;
+}
+
+class B extends A {
+	public int m() throws RuntimeException, IOException, ClassNotFoundException {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException05_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException05_in.java
new file mode 100644
index 0000000..24a972e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException05_in.java
@@ -0,0 +1,13 @@
+package org.eclipse.p;
+
+import java.io.IOException;
+
+class A {
+	/**
+	 * @throws Exception
+	 * @throws IOException
+	 * @throws IllegalArgumentException
+	 */
+	void m() throws Exception, IOException, IllegalArgumentException {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException05_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException05_out.java
new file mode 100644
index 0000000..6bb544f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testException05_out.java
@@ -0,0 +1,10 @@
+package org.eclipse.p;
+
+
+class A {
+	/**
+	 * @throws Exception
+	 */
+	void m() throws Exception {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics01_in.java
new file mode 100644
index 0000000..548316c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics01_in.java
@@ -0,0 +1,11 @@
+package p;
+
+class A<E> {
+	void m(Integer i, E e) {}
+}
+
+class Sub<Q> extends A<Q> {
+	void m(Integer i, Q q) {
+		super.m(i, q);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics01_out.java
new file mode 100644
index 0000000..a82b706
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics01_out.java
@@ -0,0 +1,25 @@
+package p;
+
+class A<E> {
+	/**
+	 * @deprecated Use {@link #m(E,Integer)} instead
+	 */
+	void m(Integer i, E e) {
+		m(e, i);
+	}
+
+	void m(E e, Integer integer) {}
+}
+
+class Sub<Q> extends A<Q> {
+	/**
+	 * @deprecated Use {@link #m(Q,Integer)} instead
+	 */
+	void m(Integer i, Q q) {
+		m(q, i);
+	}
+
+	void m(Q q, Integer integer) {
+		super.m(q, integer);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics02_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics02_in.java
new file mode 100644
index 0000000..4ead4c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics02_in.java
@@ -0,0 +1,9 @@
+package p;
+
+class A<E> {
+	<T> void m(T t, E e) {}
+}
+
+class Sub<Q> extends A<Q> {
+	void m(Integer i, Q q) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics02_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics02_out.java
new file mode 100644
index 0000000..c00c598
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics02_out.java
@@ -0,0 +1,12 @@
+package p;
+
+import java.util.HashMap;
+import java.util.List;
+
+class A<E> {
+	<T> void m(E e, T t, List<HashMap> maps) {}
+}
+
+class Sub<Q> extends A<Q> {
+	void m(Integer i, Q q) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics03_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics03_in.java
new file mode 100644
index 0000000..25c4c82
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics03_in.java
@@ -0,0 +1,5 @@
+package p;
+
+class A<E> {
+	<T> void m(T t, E e) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics03_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics03_out.java
new file mode 100644
index 0000000..e297fc3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics03_out.java
@@ -0,0 +1,8 @@
+package p;
+
+import java.util.HashMap;
+import java.util.List;
+
+class A<E> {
+	<T> void m(E e, T t, List<HashMap> maps) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics04_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics04_in.java
new file mode 100644
index 0000000..bca3526
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics04_in.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A<E> {
+	public <T extends Number> void m(List<Integer> li, A<String> as) {}
+}
+
+class Sub<E> extends A<E> {
+	public <T extends Number> void m(List<Integer> li, A<String> as) {}
+	
+	void test() {
+		A<String> as= new A<String>();
+		as.m(new ArrayList<Integer>(1), as);
+		new Sub<Double>().m(new ArrayList<Integer>(2), as);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics04_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics04_out.java
new file mode 100644
index 0000000..00e7b55
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics04_out.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.List;
+
+class A<E> {
+	public <T extends Number> void m(A<String> as, List<Integer> li) {}
+}
+
+class Sub<E> extends A<E> {
+	public <T extends Number> void m(A<String> as, List<Integer> li) {}
+	
+	void test() {
+		A<String> as= new A<String>();
+		as.m(as, null);
+		new Sub<Double>().m(as, null);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics05_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics05_in.java
new file mode 100644
index 0000000..66186e5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics05_in.java
@@ -0,0 +1,11 @@
+package p;
+
+interface I
+{
+  public void test(Class arg);
+}
+
+class C implements I
+{
+  public void test(Class arg) {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics05_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics05_out.java
new file mode 100644
index 0000000..73c5bf2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics05_out.java
@@ -0,0 +1,11 @@
+package p;
+
+interface I
+{
+  public void test(Class<?> arg);
+}
+
+class C implements I
+{
+  public void test(Class<?> arg) {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics06_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics06_in.java
new file mode 100644
index 0000000..65cacad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics06_in.java
@@ -0,0 +1,6 @@
+package p;
+
+class C {
+	private static <E extends Exception> void foo(final String string) throws E {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics06_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics06_out.java
new file mode 100644
index 0000000..c43ad7a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testGenerics06_out.java
@@ -0,0 +1,6 @@
+package p;
+
+class C {
+	private static <E extends Exception> void foo() throws E {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport01_in.java
new file mode 100644
index 0000000..c9b0535
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport01_in.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.security.Permission;
+
+abstract class A {
+	public abstract int m();
+	Permission perm;
+	protected void finalize() {
+		m();
+	}
+}
+
+class B extends A {
+	public int m() {
+		return 17;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport01_out.java
new file mode 100644
index 0000000..56e9a2d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport01_out.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.security.Permission;
+
+abstract class A {
+	public abstract int m(java.security.acl.Permission acl, Permission p);
+	Permission perm;
+	protected void finalize() {
+		m(null, perm);
+	}
+}
+
+class B extends A {
+	public int m(java.security.acl.Permission acl, Permission p) {
+		return 17;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport02_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport02_in.java
new file mode 100644
index 0000000..c9b0535
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport02_in.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.security.Permission;
+
+abstract class A {
+	public abstract int m();
+	Permission perm;
+	protected void finalize() {
+		m();
+	}
+}
+
+class B extends A {
+	public int m() {
+		return 17;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport02_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport02_out.java
new file mode 100644
index 0000000..a2b1fa1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport02_out.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.security.Permission;
+
+abstract class A {
+	public abstract int m(Permission p, java.security.acl.Permission acl);
+	Permission perm;
+	protected void finalize() {
+		m(null, null);
+	}
+}
+
+class B extends A {
+	public int m(Permission p, java.security.acl.Permission acl) {
+		return 17;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport03_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport03_in.java
new file mode 100644
index 0000000..93dd56c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport03_in.java
@@ -0,0 +1,14 @@
+package p;
+
+abstract class A {
+	public abstract int m();
+	protected void finalize() {
+		m();
+	}
+}
+
+class B extends A {
+	public int m() {
+		return 17;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport03_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport03_out.java
new file mode 100644
index 0000000..d0b955b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport03_out.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.security.acl.Permission;
+
+abstract class A {
+	public abstract int m(Permission p, java.security.Permission pp);
+	protected void finalize() {
+		m(0, 0);
+	}
+}
+
+class B extends A {
+	public int m(Permission p, java.security.Permission pp) {
+		return 17;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport04_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport04_in.java
new file mode 100644
index 0000000..ef048be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport04_in.java
@@ -0,0 +1,8 @@
+package p;
+
+abstract class A {
+	public abstract int m();
+	protected void finalize() {
+		m();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport04_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport04_out.java
new file mode 100644
index 0000000..d662b19
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport04_out.java
@@ -0,0 +1,8 @@
+package p;
+
+abstract class A {
+	public abstract int m(Object o);
+	protected void finalize() {
+		m(null);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport05_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport05_in.java
new file mode 100644
index 0000000..f0b3e47
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport05_in.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+	List m() {
+		return new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport05_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport05_out.java
new file mode 100644
index 0000000..184c050
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport05_out.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.ArrayList;
+
+class A {
+	Object m() {
+		return new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport06_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport06_in.java
new file mode 100644
index 0000000..109b9bb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport06_in.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.security.Permission;
+
+class A {
+	Cloneable m(Permission perm, java.security.acl.Permission acl) {
+		Object o1= perm;
+		Object o2= acl;
+		return null;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport06_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport06_out.java
new file mode 100644
index 0000000..52ead49
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport06_out.java
@@ -0,0 +1,11 @@
+package p;
+
+import java.security.Permission;
+
+class A {
+	java.security.acl.Permission m(Permission xperm, java.security.acl.Permission[][] xacl) {
+		Object o1= xacl;
+		Object o2= xperm;
+		return null;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport07_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport07_in.java
new file mode 100644
index 0000000..a5627d4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport07_in.java
@@ -0,0 +1,13 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+	void m(List list) {
+		
+	}
+	void use() {
+		m(new ArrayList());
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport07_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport07_out.java
new file mode 100644
index 0000000..46edd3c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport07_out.java
@@ -0,0 +1,11 @@
+package p;
+
+
+class A {
+	void m() {
+		
+	}
+	void use() {
+		m();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport08_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport08_in.java
new file mode 100644
index 0000000..a57346a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport08_in.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.Vector;
+
+class A {
+   public static boolean textContains(String text, Vector v) {
+      return v.contains(text);
+   }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport08_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport08_out.java
new file mode 100644
index 0000000..1b0bb5d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testImport08_out.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.Vector;
+
+class A {
+   public static boolean textContains(Vector v, String text) {
+      return v.contains(text);
+   }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic01_in.java
new file mode 100644
index 0000000..32c8495
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic01_in.java
@@ -0,0 +1,19 @@
+class Example {
+	public static final Example A = new Example("A1", "A2");
+	public static final Example B = Example.getExample("B1", "B2");
+	
+	public static final Example C;    
+	public static final Example D;
+	static {
+		C = new Example("C1", "C2");
+		D = Example.getExample("D1", "D2");
+	}
+	
+	public Example(String arg1, String arg2) {
+
+	}
+	
+	public static Example getExample(String arg1, String arg2) {
+		return new Example(arg1, arg2);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic01_out.java
new file mode 100644
index 0000000..490af8b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic01_out.java
@@ -0,0 +1,19 @@
+class Example {
+	public static final Example A = new Example("A2", "A1");
+	public static final Example B = Example.getExample("B1", "B2");
+	
+	public static final Example C;    
+	public static final Example D;
+	static {
+		C = new Example("C2", "C1");
+		D = Example.getExample("D1", "D2");
+	}
+	
+	public Example(String b, String a) {
+
+	}
+	
+	public static Example getExample(String arg1, String arg2) {
+		return new Example(arg2, arg1);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic02_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic02_in.java
new file mode 100644
index 0000000..32c8495
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic02_in.java
@@ -0,0 +1,19 @@
+class Example {
+	public static final Example A = new Example("A1", "A2");
+	public static final Example B = Example.getExample("B1", "B2");
+	
+	public static final Example C;    
+	public static final Example D;
+	static {
+		C = new Example("C1", "C2");
+		D = Example.getExample("D1", "D2");
+	}
+	
+	public Example(String arg1, String arg2) {
+
+	}
+	
+	public static Example getExample(String arg1, String arg2) {
+		return new Example(arg1, arg2);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic02_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic02_out.java
new file mode 100644
index 0000000..7e5dc4d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testInStatic02_out.java
@@ -0,0 +1,19 @@
+class Example {
+	public static final Example A = new Example("A1", "A2");
+	public static final Example B = Example.getExample("B2", "B1");
+	
+	public static final Example C;    
+	public static final Example D;
+	static {
+		C = new Example("C1", "C2");
+		D = Example.getExample("D2", "D1");
+	}
+	
+	public Example(String arg1, String arg2) {
+
+	}
+	
+	public static Example getExample(String b, String a) {
+		return new Example(a, b);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName01_in.java
new file mode 100644
index 0000000..f04c138
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName01_in.java
@@ -0,0 +1,14 @@
+package p;
+
+class A {
+	void m(String y){
+        m(y);
+    }
+}
+
+class B {
+	public int m(String q) {
+		new A().m("x");
+		return m("k");
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName01_out.java
new file mode 100644
index 0000000..2e98448
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName01_out.java
@@ -0,0 +1,14 @@
+package p;
+
+class A {
+	void newName(String y){
+        newName(y);
+    }
+}
+
+class B {
+	public int m(String q) {
+		new A().newName("x");
+		return m("k");
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName02_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName02_in.java
new file mode 100644
index 0000000..d8ccd4e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName02_in.java
@@ -0,0 +1,14 @@
+package p;
+
+class A {
+	void m(String y){
+        m(y);
+    }
+}
+
+class B extends A {
+	public void m(String q) {
+		new A().m("x");
+		return m("k");
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName02_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName02_out.java
new file mode 100644
index 0000000..63e29e5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testName02_out.java
@@ -0,0 +1,14 @@
+package p;
+
+class A {
+	void newName(String y){
+        newName(y);
+    }
+}
+
+class B extends A {
+	public void newName(String q) {
+		new A().newName("x");
+		return newName("k");
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder26_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder26_in.java
new file mode 100644
index 0000000..592b8fc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder26_in.java
@@ -0,0 +1,7 @@
+package p;
+
+class A{
+	private void m(boolean y, int a){
+        m(y, a);
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder26_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder26_out.java
new file mode 100644
index 0000000..e54361c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder26_out.java
@@ -0,0 +1,14 @@
+package p;
+
+class A{
+	/**
+	 * @deprecated Use {@link #m(int,boolean)} instead
+	 */
+	private void m(boolean y, int a){
+		m(a, y);
+	}
+
+	private void m(int bb, boolean zzz){
+        m(bb, zzz);
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder27_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder27_in.java
new file mode 100644
index 0000000..592b8fc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder27_in.java
@@ -0,0 +1,7 @@
+package p;
+
+class A{
+	private void m(boolean y, int a){
+        m(y, a);
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder27_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder27_out.java
new file mode 100644
index 0000000..4875d73
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testRenameReorder27_out.java
@@ -0,0 +1,14 @@
+package p;
+
+class A{
+	/**
+	 * @deprecated Use {@link #m(int,boolean)} instead
+	 */
+	private void m(boolean y, int a){
+		m(a, y);
+	}
+
+	private void m(int a, boolean yyy){
+        m(a, yyy);
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport01_in.java
new file mode 100644
index 0000000..efc0e93
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport01_in.java
@@ -0,0 +1,14 @@
+package p;
+
+import static p.A.m;
+
+class A {
+	public static void m() {}
+}
+
+class User {
+	{
+		A.m();
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport01_out.java
new file mode 100644
index 0000000..0d6c609
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport01_out.java
@@ -0,0 +1,14 @@
+package p;
+
+import static p.A.abc;
+
+class A {
+	public static void abc() {}
+}
+
+class User {
+	{
+		A.abc();
+		abc();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport02_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport02_in.java
new file mode 100644
index 0000000..d5821e5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport02_in.java
@@ -0,0 +1,14 @@
+package p;
+
+import static p.A.m;
+
+class A {
+	public static void m(Integer i) {}
+}
+
+class User {
+	{
+		A.m(1);
+		m(2);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport02_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport02_out.java
new file mode 100644
index 0000000..93103ba
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testStaticImport02_out.java
@@ -0,0 +1,14 @@
+package p;
+
+import static p.A.m;
+
+class A {
+	public static void m(Integer i, Object o) {}
+}
+
+class User {
+	{
+		A.m(1, null);
+		m(2, null);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg01_in.java
new file mode 100644
index 0000000..3997848
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg01_in.java
@@ -0,0 +1,33 @@
+package p;
+
+class A {
+	public void m(int i, String... names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class B extends A {
+	public void m(int i, String[] names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class C extends B {
+	public void m(int i, String... names) {
+		System.out.println(names[i]);
+		names= new String[0];
+	}
+}
+
+class Client {
+	{
+		new A().m(0);
+		new B().m(1, new String[] {"X"});
+		new C().m(2, new String[] {"X", "Y"});
+		new C().m(2, "X", "Y", "Z");
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg01_out.java
new file mode 100644
index 0000000..019dd22
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg01_out.java
@@ -0,0 +1,33 @@
+package p;
+
+class A {
+	public void m(int i, String... strings) {
+		for (String name : strings) {
+			System.out.println(name);
+		}
+	}
+}
+
+class B extends A {
+	public void m(int i, String[] strings) {
+		for (String name : strings) {
+			System.out.println(name);
+		}
+	}
+}
+
+class C extends B {
+	public void m(int i, String... strings) {
+		System.out.println(strings[i]);
+		strings= new String[0];
+	}
+}
+
+class Client {
+	{
+		new A().m(0);
+		new B().m(1, new String[] {"X"});
+		new C().m(2, new String[] {"X", "Y"});
+		new C().m(2, "X", "Y", "Z");
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg02_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg02_in.java
new file mode 100644
index 0000000..031ac4c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg02_in.java
@@ -0,0 +1,25 @@
+package p;
+
+class A {
+	public void m(int i, String... names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class B extends A {
+	public void m(int i, String[] names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class Client {
+	{
+		new A().m(0);
+		new A().m(2, "X", "Y", "Z");
+		new B().m(1, new String[] {"X"});
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg02_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg02_out.java
new file mode 100644
index 0000000..99fb76a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg02_out.java
@@ -0,0 +1,39 @@
+package p;
+
+class A {
+	/**
+	 * @deprecated Use {@link #m(Object,int,String...)} instead
+	 */
+	public void m(int i, String... names) {
+		m(new Object(), i, names);
+	}
+
+	public void m(Object o, int i, String... names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class B extends A {
+	/**
+	 * @deprecated Use {@link #m(Object,int,String[])} instead
+	 */
+	public void m(int i, String[] names) {
+		m(new Object(), i, names);
+	}
+
+	public void m(Object o, int i, String[] names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class Client {
+	{
+		new A().m(new Object(), 0);
+		new A().m(new Object(), 2, "X", "Y", "Z");
+		new B().m(new Object(), 1, new String[] {"X"});
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg03_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg03_in.java
new file mode 100644
index 0000000..8dd4b0e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg03_in.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+	/**
+	 * @see #use(String)
+	 * @see #use(String[])
+	 * @see #use(String...)
+	 */
+	public void use(String... args) { }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg03_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg03_out.java
new file mode 100644
index 0000000..8278a0a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg03_out.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+	/**
+	 * @see #use(Object[])
+	 * @see #use(Object[])
+	 * @see #use(Object...)
+	 */
+	public void use(Object... args) { }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg04_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg04_in.java
new file mode 100644
index 0000000..ffcdf0d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg04_in.java
@@ -0,0 +1,15 @@
+package p;
+
+class A {
+	public void use(String... args) { }
+	
+	public void call() {
+		use();
+		use("one");
+		use("one", "two");
+		use(new String[] {"one", "two"});
+		use(null);
+		use((String[]) null);
+		use((String) null);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg04_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg04_out.java
new file mode 100644
index 0000000..118a316
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg04_out.java
@@ -0,0 +1,15 @@
+package p;
+
+class A {
+	public void use(int i, String... args) { }
+	
+	public void call() {
+		use(1);
+		use(1, "one");
+		use(1, "one", "two");
+		use(1, new String[] {"one", "two"});
+		use(1, null);
+		use(1, (String[]) null);
+		use(1, (String) null);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg05_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg05_in.java
new file mode 100644
index 0000000..a96e0c9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg05_in.java
@@ -0,0 +1,20 @@
+package p;
+
+class A {
+	/**
+	 * @see #use(Object, String[])
+	 */
+	public void use(Object first, String... args) {
+		System.out.println(first);
+	}
+	
+	public void call() {
+		use(null);
+		use(null, "one");
+		use(null, "one", "two");
+		use(null, new String[] {"one", "two"});
+		use(null, null);
+		use(null, (String[]) null);
+		use(null, (String) null);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg05_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg05_out.java
new file mode 100644
index 0000000..5fba5b5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg05_out.java
@@ -0,0 +1,28 @@
+package p;
+
+class A {
+	/**
+	 * @see #use(Object, String[])
+	 * @deprecated Use {@link #use(Object)} instead
+	 */
+	public void use(Object first, String... args) {
+		use(first);
+	}
+
+	/**
+	 * @see #use(Object)
+	 */
+	public void use(Object arg) {
+		System.out.println(arg);
+	}
+	
+	public void call() {
+		use(null);
+		use(null);
+		use(null);
+		use(null);
+		use(null);
+		use(null);
+		use(null);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg06_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg06_in.java
new file mode 100644
index 0000000..9fddefc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg06_in.java
@@ -0,0 +1,25 @@
+package p;
+
+class A {
+	public void m(int i, String[] names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class B extends A {
+	public void m(int i, String... names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class Client {
+	void test(int i, String... args) {
+		new A().m(1, new String[] {"X"});
+		new B().m(0);
+		new B().m(2, "X", "Y", "Z");
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg06_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg06_out.java
new file mode 100644
index 0000000..c891cdf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg06_out.java
@@ -0,0 +1,25 @@
+package p;
+
+class A {
+	public void m(int i, String... names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class B extends A {
+	public void m(int i, String... names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class Client {
+	void test(int i, String... args) {
+		new A().m(1, new String[] {"X"});
+		new B().m(0);
+		new B().m(2, "X", "Y", "Z");
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg07_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg07_in.java
new file mode 100644
index 0000000..634d6da
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg07_in.java
@@ -0,0 +1,19 @@
+package p;
+
+class A {
+	public void m(int i, String[] names) {
+	}
+}
+
+class B extends A {
+	public void m(int i, String... names) {
+	}	
+}
+
+class Client {
+	void test(int i, String... args) {
+		new A().m(1, new String[] {"X"});
+		new B().m(0);
+		new B().m(2, "X", "Y", "Z");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg07_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg07_out.java
new file mode 100644
index 0000000..59a8591
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg07_out.java
@@ -0,0 +1,33 @@
+package p;
+
+class A {
+	/**
+	 * @deprecated Use {@link #m(int,String,Integer)} instead
+	 */
+	public void m(int i, String[] names) {
+		m(i, "none", 17);
+	}
+
+	public void m(int i, String j, Integer k) {
+	}
+}
+
+class B extends A {
+	/**
+	 * @deprecated Use {@link #m(int,String,Integer)} instead
+	 */
+	public void m(int i, String... names) {
+		m(i, "none", 17);
+	}
+
+	public void m(int i, String j, Integer k) {
+	}	
+}
+
+class Client {
+	void test(int i, String... args) {
+		new A().m(1, "none", 17);
+		new B().m(0, "none", 17);
+		new B().m(2, "none", 17);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg08_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg08_in.java
new file mode 100644
index 0000000..7e970a2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg08_in.java
@@ -0,0 +1,20 @@
+package p;
+
+class A {
+	/**
+	 * This is {@link #m()}.
+	 */
+	public void m() {
+		if (12 > 12)
+			m();
+	}
+	void x() {
+		m();
+	}
+}
+
+class B {
+	public void b() {
+		new A().m();
+	}	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg08_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg08_out.java
new file mode 100644
index 0000000..ec693d4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg08_out.java
@@ -0,0 +1,21 @@
+package p;
+
+class A {
+	/**
+	 * This is {@link #m(String...)}.
+	 * @param args TODO
+	 */
+	public void m(String... args) {
+		if (12 > 12)
+			m(args);
+	}
+	void x() {
+		m();
+	}
+}
+
+class B {
+	public void b() {
+		new A().m();
+	}	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg09_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg09_in.java
new file mode 100644
index 0000000..7e970a2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg09_in.java
@@ -0,0 +1,20 @@
+package p;
+
+class A {
+	/**
+	 * This is {@link #m()}.
+	 */
+	public void m() {
+		if (12 > 12)
+			m();
+	}
+	void x() {
+		m();
+	}
+}
+
+class B {
+	public void b() {
+		new A().m();
+	}	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg09_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg09_out.java
new file mode 100644
index 0000000..f609386
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg09_out.java
@@ -0,0 +1,21 @@
+package p;
+
+class A {
+	/**
+	 * This is {@link #m(String...)}.
+	 * @param args TODO
+	 */
+	public void m(String... args) {
+		if (12 > 12)
+			m(args);
+	}
+	void x() {
+		m("Hello");
+	}
+}
+
+class B {
+	public void b() {
+		new A().m("Hello");
+	}	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg10_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg10_in.java
new file mode 100644
index 0000000..7e970a2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg10_in.java
@@ -0,0 +1,20 @@
+package p;
+
+class A {
+	/**
+	 * This is {@link #m()}.
+	 */
+	public void m() {
+		if (12 > 12)
+			m();
+	}
+	void x() {
+		m();
+	}
+}
+
+class B {
+	public void b() {
+		new A().m();
+	}	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg10_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg10_out.java
new file mode 100644
index 0000000..1fdabbe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/canModify/A_testVararg10_out.java
@@ -0,0 +1,21 @@
+package p;
+
+class A {
+	/**
+	 * This is {@link #m(String...)}.
+	 * @param args TODO
+	 */
+	public void m(String... args) {
+		if (12 > 12)
+			m(args);
+	}
+	void x() {
+		m("Hello", new String());
+	}
+}
+
+class B {
+	public void b() {
+		new A().m("Hello", new String());
+	}	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFail0.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFail0.java
new file mode 100644
index 0000000..4d043c4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFail0.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	private native int m(int i, int j);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFail1.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFail1.java
new file mode 100644
index 0000000..482ae7b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFail1.java
@@ -0,0 +1,5 @@
+package p;
+class A {
+	private void m() throws Integer {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAdd2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAdd2.java
new file mode 100644
index 0000000..abf6cbf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAdd2.java
@@ -0,0 +1,10 @@
+package p;
+//name clash in subclass
+class A{
+	int m(int i){
+	}
+}
+class B extends A{
+	int m(int x){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAdd3.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAdd3.java
new file mode 100644
index 0000000..0b79feb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAdd3.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	int m(int i){
+	}
+}
+class B extends A{
+	int m(int i){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAdd4.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAdd4.java
new file mode 100644
index 0000000..49def5e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAdd4.java
@@ -0,0 +1,10 @@
+package p;
+//name clash in subclass
+class A{
+	int m(int i){
+	}
+}
+class B extends A{
+	int m(int i){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAnnotation1.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAnnotation1.java
new file mode 100644
index 0000000..1f92a01
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailAnnotation1.java
@@ -0,0 +1,6 @@
+package p;
+
+@A(name="Name")
+@interface A {
+	String name();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll5.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll5.java
new file mode 100644
index 0000000..359bd64
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll5.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	int m(int i){
+	}
+}
+class B extends A{
+	int m(int i){
+		int o= i;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll6.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll6.java
new file mode 100644
index 0000000..74b0a1f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll6.java
@@ -0,0 +1,7 @@
+//cannot change type of i to Certificate (there are 2 Certificates)
+package p;
+class A{
+	int m(int i){
+		return 1;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll7.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll7.java
new file mode 100644
index 0000000..93ffb84
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll7.java
@@ -0,0 +1,7 @@
+//cannot change type of i to Fred - no such type exists
+package p;
+class A{
+	int m(int i){
+		return 1;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll8.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll8.java
new file mode 100644
index 0000000..46bdbcc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailDoAll8.java
@@ -0,0 +1,6 @@
+package p;
+class A {
+	void run(int i) {
+		int k= i;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailGenerics01.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailGenerics01.java
new file mode 100644
index 0000000..dc2893d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailGenerics01.java
@@ -0,0 +1,9 @@
+package p;
+
+class A<E> {
+	void m(E e) {}
+}
+
+class Sub<E> extends A<E> {
+	void m(E e) {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailImport01.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailImport01.java
new file mode 100644
index 0000000..93dd56c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailImport01.java
@@ -0,0 +1,14 @@
+package p;
+
+abstract class A {
+	public abstract int m();
+	protected void finalize() {
+		m();
+	}
+}
+
+class B extends A {
+	public int m() {
+		return 17;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg01.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg01.java
new file mode 100644
index 0000000..6a004d4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg01.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+	public void m(int i, String... names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg02.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg02.java
new file mode 100644
index 0000000..2257c4e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg02.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+	public void m(int i, String[] names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg03.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg03.java
new file mode 100644
index 0000000..ca55fe5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg03.java
@@ -0,0 +1,22 @@
+package p;
+
+class A {
+	public void m(int i, String[] names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class B extends A {
+	public void m(int i, String... names) {
+	}	
+}
+
+class Client {
+	void test(int i, String... args) {
+		new A().m(1, new String[] {"X"});
+		new B().m(0);
+		new B().m(2, "X", "Y", "Z");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg04.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg04.java
new file mode 100644
index 0000000..6783131
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg04.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+	public void m(int i, String... names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg05.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg05.java
new file mode 100644
index 0000000..ca55fe5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeSignature/cannotModify/A_testFailVararg05.java
@@ -0,0 +1,22 @@
+package p;
+
+class A {
+	public void m(int i, String[] names) {
+		for (String name : names) {
+			System.out.println(name);
+		}
+	}
+}
+
+class B extends A {
+	public void m(int i, String... names) {
+	}	
+}
+
+class Client {
+	void test(int i, String... args) {
+		new A().m(1, new String[] {"X"});
+		new B().m(0);
+		new B().m(2, "X", "Y", "Z");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testArray2_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testArray2_in.java
new file mode 100644
index 0000000..414d1c4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testArray2_in.java
@@ -0,0 +1,6 @@
+import java.util.Vector;
+
+class A_testArray_in {
+	public static void main(String args[]) {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testArray_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testArray_in.java
new file mode 100644
index 0000000..7fc62aa
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testArray_in.java
@@ -0,0 +1,8 @@
+import java.util.Vector;
+
+class A_testArray_in {
+	public static void main(String[] args) {
+		Vector[] vv = new Vector[10];
+		System.out.println("Hello, world!");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testBogusSelection_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testBogusSelection_in.java
new file mode 100644
index 0000000..3b8a967
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testBogusSelection_in.java
@@ -0,0 +1,8 @@
+import java.util.Hashtable;
+
+class A_testBogusSelection_in {
+	public static void main(String[] args) {
+		Hashtable h = new Hashtable();
+		System.out.println("Hello, world!");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testEnum_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testEnum_in.java
new file mode 100644
index 0000000..ed2093f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testEnum_in.java
@@ -0,0 +1,12 @@
+enum E {
+	A(1), B(2), C(3);
+	public E(int i) {
+	}
+}
+
+class Z {
+	E foo() {
+		E e= null;   //<=== disable generalize type here.
+		return e;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testFieldOfLocalType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testFieldOfLocalType_in.java
new file mode 100644
index 0000000..da01e6e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testFieldOfLocalType_in.java
@@ -0,0 +1,35 @@
+public class A_testFieldOfLocalType_in {
+	
+	public void foobar() {
+		class Listener3 {
+			private A_testFieldOfLocalType_in fTest;
+			
+			private Listener3() {
+				fTest= new A_testFieldOfLocalType_in();
+			}
+			
+			public int bar() {
+				return foo();
+			}
+			
+			public int foo() {
+				return 1;
+			}
+			
+			private String getProperty() {
+				return null;
+			}
+		}
+		
+		this.addListener(new Listener3() {
+			public int bar() {
+				return 1;
+			}
+		});
+	}
+	
+	
+	public void addListener(Object o) {
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testInvalidSelection_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testInvalidSelection_in.java
new file mode 100644
index 0000000..38f4fe6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testInvalidSelection_in.java
@@ -0,0 +1,8 @@
+import java.util.Hashtable;
+
+class A_testInvalidSelection_in {
+	public static void main(String[] args) {
+		Hashtable h = new Hashtable();
+		System.out.println("Hello, world!");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testMultiDeclaration_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testMultiDeclaration_in.java
new file mode 100644
index 0000000..0f08c6a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testMultiDeclaration_in.java
@@ -0,0 +1,9 @@
+import java.util.*;
+
+class A_testMultiDeclaration_in {
+	public void foo(){
+		List l = list1; list2 =l;
+	}
+	
+	public ArrayList list1, list2;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testObjectReturnType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testObjectReturnType_in.java
new file mode 100644
index 0000000..a4b3d16
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testObjectReturnType_in.java
@@ -0,0 +1,6 @@
+public class A_testObjectReturnType_in {
+	
+	public void Object foo() {
+		return null;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testOverriddenBinaryMethod_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testOverriddenBinaryMethod_in.java
new file mode 100644
index 0000000..f85e820
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testOverriddenBinaryMethod_in.java
@@ -0,0 +1,6 @@
+
+public class A_testOverriddenBinaryMethod_in {
+	public String toString(){
+		return null;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testPrimitive_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testPrimitive_in.java
new file mode 100644
index 0000000..86530f1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testPrimitive_in.java
@@ -0,0 +1,8 @@
+import java.util.Vector;
+
+class A_testArray_in {
+	public static void main(String[] args) {
+		int i = 10;
+		System.out.println("Hello, world!");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testQualifiedFieldRef_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testQualifiedFieldRef_in.java
new file mode 100644
index 0000000..23990e6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testQualifiedFieldRef_in.java
@@ -0,0 +1,6 @@
+public class A_testQualifiedFieldRef_in {
+	private static String field;
+	public void foo(){
+		J.field = null;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testTypeParameter_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testTypeParameter_in.java
new file mode 100644
index 0000000..0e89712
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testTypeParameter_in.java
@@ -0,0 +1,5 @@
+public class A_testTypeParameter_in<T> {
+	public void foo() {
+		T t;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testUpdateNotPossible_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testUpdateNotPossible_in.java
new file mode 100644
index 0000000..d24d1b5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/negative/A_testUpdateNotPossible_in.java
@@ -0,0 +1,10 @@
+import java.util.Hashtable;
+
+class A_testUpdateNotPossible_in {
+	public void foo {
+		Hashtable h1 = new Hashtable();
+		Hashtable h2 = new Hashtable();
+		h1 = h2;
+		h2 = h1;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_test4TypeParameters_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_test4TypeParameters_in.java
new file mode 100644
index 0000000..54edf72
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_test4TypeParameters_in.java
@@ -0,0 +1,8 @@
+public class A_test4TypeParameters_in {
+	void foo(){
+		A<String,Integer,Float,Double> a = null;
+	}
+}
+interface I<T1,T2>{ }
+interface J<T3,T4> extends I<T4,T3>{ }
+class A<T5,T6,T7,T8> implements I<T5,T6>, J<T7,T8> { }
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_test4TypeParameters_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_test4TypeParameters_out.java
new file mode 100644
index 0000000..aed41b7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_test4TypeParameters_out.java
@@ -0,0 +1,8 @@
+public class A_test4TypeParameters_in {
+	void foo(){
+		I<Double, Float> a = null;
+	}
+}
+interface I<T1,T2>{ }
+interface J<T3,T4> extends I<T4,T3>{ }
+class A<T5,T6,T7,T8> implements I<T5,T6>, J<T7,T8> { }
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testArray_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testArray_in.java
new file mode 100644
index 0000000..45e456d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testArray_in.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testArray_in {
+	void foo(){
+		List[] ls = new ArrayList[10];
+		int n = ls.length;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testCatchClause_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testCatchClause_in.java
new file mode 100644
index 0000000..4fea448
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testCatchClause_in.java
@@ -0,0 +1,11 @@
+import java.io.*;
+
+public class A_testCatchClause_in {
+    public void f(File f) {
+        try {
+            FileInputStream is = new FileInputStream(f);
+        } catch (FileNotFoundException ex) {
+            System.err.println("file not found");
+        }
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testCatchClause_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testCatchClause_out.java
new file mode 100644
index 0000000..505633d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testCatchClause_out.java
@@ -0,0 +1,11 @@
+import java.io.*;
+
+public class A_testCatchClause_in {
+    public void f(File f) {
+        try {
+            FileInputStream is = new FileInputStream(f);
+        } catch (IOException ex) {
+            System.err.println("file not found");
+        }
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDeclSubtypesOfList_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDeclSubtypesOfList_in.java
new file mode 100644
index 0000000..df1089b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDeclSubtypesOfList_in.java
@@ -0,0 +1,9 @@
+import java.util.*;
+
+class A_testFieldDeclSubtypesOfList_in {
+	public void foo(){
+		List list2 = list;
+	}
+	
+	public ArrayList list;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDeclSubtypesOfList_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDeclSubtypesOfList_out.java
new file mode 100644
index 0000000..c19dc17
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDeclSubtypesOfList_out.java
@@ -0,0 +1,9 @@
+import java.util.*;
+
+class A_testFieldDeclSubtypesOfList_in {
+	public void foo(){
+		List list2 = list;
+	}
+	
+	public List list;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDecl_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDecl_in.java
new file mode 100644
index 0000000..d39640f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDecl_in.java
@@ -0,0 +1,11 @@
+import java.util.*;
+
+class A_testFieldDecl_in {
+	void foo(){
+		list = new ArrayList();
+		List list2 = list;
+	}
+	
+	
+	public static ArrayList list;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDecl_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDecl_out.java
new file mode 100644
index 0000000..7f2c18c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldDecl_out.java
@@ -0,0 +1,11 @@
+import java.util.*;
+
+class A_testFieldDecl_in {
+	void foo(){
+		list = new ArrayList();
+		List list2 = list;
+	}
+	
+	
+	public static AbstractList list;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldName_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldName_in.java
new file mode 100644
index 0000000..420f08d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldName_in.java
@@ -0,0 +1,11 @@
+import java.util.ArrayList;
+import java.util.List;
+
+class A_testFieldName_in {
+	void foo(){
+		list = new ArrayList();
+		List list2 = list;
+	}
+	
+	public static ArrayList list;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldName_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldName_out.java
new file mode 100644
index 0000000..0630d51
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldName_out.java
@@ -0,0 +1,12 @@
+import java.util.AbstractList;
+import java.util.ArrayList;
+import java.util.List;
+
+class A_testFieldName_in {
+	void foo(){
+		list = new ArrayList();
+		List list2 = list;
+	}
+	
+	public static AbstractList list;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldType_in.java
new file mode 100644
index 0000000..fbea643
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldType_in.java
@@ -0,0 +1,11 @@
+import java.util.*;
+
+class A_testFieldType_in {
+	void foo(){
+		list = new ArrayList();
+		List list2 = list;
+	}
+	
+	
+	public static ArrayList list;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldType_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldType_out.java
new file mode 100644
index 0000000..ca474a3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldType_out.java
@@ -0,0 +1,11 @@
+import java.util.*;
+
+class A_testFieldType_in {
+	void foo(){
+		list = new ArrayList();
+		List list2 = list;
+	}
+	
+	
+	public static AbstractList list;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldUseSubtypesOfList_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldUseSubtypesOfList_in.java
new file mode 100644
index 0000000..3edf03d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldUseSubtypesOfList_in.java
@@ -0,0 +1,9 @@
+import java.util.*;
+
+class A_testFieldUseSubtypesOfList_in {
+	public void foo(){
+		List list2 = list;
+	}
+	
+	public ArrayList list;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldUseSubtypesOfList_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldUseSubtypesOfList_out.java
new file mode 100644
index 0000000..0867282
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldUseSubtypesOfList_out.java
@@ -0,0 +1,9 @@
+import java.util.*;
+
+class A_testFieldUseSubtypesOfList_in {
+	public void foo(){
+		List list2 = list;
+	}
+	
+	public List list;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldWithAccess2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldWithAccess2.java
new file mode 100644
index 0000000..d145005
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldWithAccess2.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.util.*;
+
+public class A_testFieldWithAccess2 {
+	void bar(){
+		A_testFieldWithAccess_in ww = new A_testFieldWithAccess_in();
+		Collection pp = ww.fList;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldWithAccess_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldWithAccess_in.java
new file mode 100644
index 0000000..cfcb567
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldWithAccess_in.java
@@ -0,0 +1,7 @@
+package p;
+
+import java.util.*;
+
+class A_testFieldWithAccess_in {
+	public List fList = new ArrayList();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldWithAccess_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldWithAccess_out.java
new file mode 100644
index 0000000..6a92e17
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testFieldWithAccess_out.java
@@ -0,0 +1,7 @@
+package p;
+
+import java.util.*;
+
+class A_testFieldWithAccess_in {
+	public Collection fList = new ArrayList();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testHashMap_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testHashMap_in.java
new file mode 100644
index 0000000..a91710c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testHashMap_in.java
@@ -0,0 +1,71 @@
+package p;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+
+
+public class A_testHashMap_in {
+	public static void main(String[] args) {
+		A a = new B();
+		Collection c1 = a.e();
+		HashMap h1 = new HashMap();	/* A1 */
+		a.h(h1, "aaa", c1);
+		a.k(h1);
+		for (Iterator it = h1.values().iterator(); it.hasNext(); ){
+			Vector v1 = (Vector)it.next(); /* C1 */
+			Integer i1 = (Integer)v1.iterator().next(); /* C2 */
+			System.out.println(i1);
+		}
+	}
+}
+
+class A {
+	public Vector e(){
+		Vector v2 = new Vector();	/* A2 */
+		Integer i2 = new Integer(17);
+		insert(v2, i2);
+		Integer i3 = (Integer)v2.iterator().next(); /* C3 */
+		return v2;
+	}
+	public void f(){
+		Vector v3 = new Vector();	/* A3 */
+		v3.add(new Integer(18));
+		reverse(v3);
+		Integer i4 = (Integer)v3.get(0); /* C4 */
+	}
+	public void g(){
+		Vector v4 = new Vector();	/* A4 */
+		v4.add(new String("xyzzy"));
+		reverse(v4);
+		String s1 = (String)v4.get(0); /* C5 */
+	}
+	public void h(Map m1, Object o1, Collection c2){
+		HashMap h2 = new HashMap(); /* A5 */
+		h2.put(o1, c2);
+		m1.putAll(h2);
+	}
+	public void k(Map m2){
+		Vector v5 = new Vector(); /* A6 */
+		v5.add(new Integer(18));
+		v5.addAll(m2.keySet());
+	}
+	public void insert(Vector v6, Object o2){
+		v6.add(o2);
+	}
+	public void reverse(List x1){
+		for (int t=0; t < x1.size()/2; t++){
+			Object temp = x1.get(x1.size()-t);
+			x1.add(x1.size()-1, x1.get(t));
+			x1.add(t, temp);
+		}
+	}
+}
+class B extends A {
+	public void h(Map m3, Object o3, Collection c3){
+		m3.put(o3, c3);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testHashMap_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testHashMap_out.java
new file mode 100644
index 0000000..277252d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testHashMap_out.java
@@ -0,0 +1,72 @@
+package p;
+
+import java.util.AbstractMap;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+
+
+public class A_testHashMap_in {
+	public static void main(String[] args) {
+		A a = new B();
+		Collection c1 = a.e();
+		AbstractMap h1 = new HashMap();	/* A1 */
+		a.h(h1, "aaa", c1);
+		a.k(h1);
+		for (Iterator it = h1.values().iterator(); it.hasNext(); ){
+			Vector v1 = (Vector)it.next(); /* C1 */
+			Integer i1 = (Integer)v1.iterator().next(); /* C2 */
+			System.out.println(i1);
+		}
+	}
+}
+
+class A {
+	public Vector e(){
+		Vector v2 = new Vector();	/* A2 */
+		Integer i2 = new Integer(17);
+		insert(v2, i2);
+		Integer i3 = (Integer)v2.iterator().next(); /* C3 */
+		return v2;
+	}
+	public void f(){
+		Vector v3 = new Vector();	/* A3 */
+		v3.add(new Integer(18));
+		reverse(v3);
+		Integer i4 = (Integer)v3.get(0); /* C4 */
+	}
+	public void g(){
+		Vector v4 = new Vector();	/* A4 */
+		v4.add(new String("xyzzy"));
+		reverse(v4);
+		String s1 = (String)v4.get(0); /* C5 */
+	}
+	public void h(Map m1, Object o1, Collection c2){
+		HashMap h2 = new HashMap(); /* A5 */
+		h2.put(o1, c2);
+		m1.putAll(h2);
+	}
+	public void k(Map m2){
+		Vector v5 = new Vector(); /* A6 */
+		v5.add(new Integer(18));
+		v5.addAll(m2.keySet());
+	}
+	public void insert(Vector v6, Object o2){
+		v6.add(o2);
+	}
+	public void reverse(List x1){
+		for (int t=0; t < x1.size()/2; t++){
+			Object temp = x1.get(x1.size()-t);
+			x1.add(x1.size()-1, x1.get(t));
+			x1.add(t, temp);
+		}
+	}
+}
+class B extends A {
+	public void h(Map m3, Object o3, Collection c3){
+		m3.put(o3, c3);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testImport_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testImport_in.java
new file mode 100644
index 0000000..16a83bd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testImport_in.java
@@ -0,0 +1,13 @@
+
+import java.awt.List;
+import java.util.ArrayList;
+import java.util.Hashtable;
+
+class A_TestImport_in {
+	public void foo(Hashtable table){
+		table = new Hashtable();
+		table.put("foo", "bar");
+		List awtList = null;
+		ArrayList al = new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testImport_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testImport_out.java
new file mode 100644
index 0000000..de26311
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testImport_out.java
@@ -0,0 +1,13 @@
+
+import java.awt.List;
+import java.util.ArrayList;
+import java.util.Hashtable;
+
+class A_TestImport_in {
+	public void foo(Hashtable table){
+		table = new Hashtable();
+		table.put("foo", "bar");
+		List awtList = null;
+		java.util.List al = new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testInterfaceTypes_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testInterfaceTypes_in.java
new file mode 100644
index 0000000..bb7d617
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testInterfaceTypes_in.java
@@ -0,0 +1,12 @@
+
+public class A_testInterfaceTypes_in {
+	void foo(){
+		B b = new C();
+		b.toString();
+	}
+}
+
+interface I { }
+class A implements I { }
+class B extends A implements I { }
+class C extends B implements I { }
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testInterfaceTypes_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testInterfaceTypes_out.java
new file mode 100644
index 0000000..3b775d7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testInterfaceTypes_out.java
@@ -0,0 +1,12 @@
+
+public class A_testInterfaceTypes_in {
+	void foo(){
+		I b = new C();
+		b.toString();
+	}
+}
+
+interface I { }
+class A implements I { }
+class B extends A implements I { }
+class C extends B implements I { }
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalSuperTypesOfArrayList_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalSuperTypesOfArrayList_in.java
new file mode 100644
index 0000000..2222265
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalSuperTypesOfArrayList_in.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class A_testLocalSuperTypesOfArrayList_in {
+	public static void main(String[] args) {
+		ArrayList list = new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalSuperTypesOfArrayList_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalSuperTypesOfArrayList_out.java
new file mode 100644
index 0000000..2c93a7c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalSuperTypesOfArrayList_out.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+class A_testLocalSuperTypesOfArrayList_in {
+	public static void main(String[] args) {
+		List list = new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarCast_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarCast_in.java
new file mode 100644
index 0000000..d488f84
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarCast_in.java
@@ -0,0 +1,9 @@
+import java.util.*;
+
+class A_testLocalVarCast_in {
+	public void foo(){
+		ArrayList x = new ArrayList();
+		ArrayList o = x;
+		List y = (List)o;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarCast_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarCast_out.java
new file mode 100644
index 0000000..b5a3e9a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarCast_out.java
@@ -0,0 +1,9 @@
+import java.util.*;
+
+class A_testLocalVarCast_in {
+	public void foo(){
+		ArrayList x = new ArrayList();
+		List o = x;
+		List y = (List)o;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarDecl_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarDecl_in.java
new file mode 100644
index 0000000..30ddcb5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarDecl_in.java
@@ -0,0 +1,14 @@
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Properties;
+
+class A_testLocalVarDecl_in {
+	public static void main(String[] args) {
+		Hashtable table = new Properties();
+		Map map = table;
+		table.put(table,table);
+		table.containsKey(map);
+		map = new HashMap();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarDecl_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarDecl_out.java
new file mode 100644
index 0000000..1d5d5d3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarDecl_out.java
@@ -0,0 +1,14 @@
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Properties;
+
+class A_testLocalVarDecl_in {
+	public static void main(String[] args) {
+		Map table = new Properties();
+		Map map = table;
+		table.put(table,table);
+		table.containsKey(map);
+		map = new HashMap();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarName_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarName_in.java
new file mode 100644
index 0000000..a0946af
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarName_in.java
@@ -0,0 +1,10 @@
+import java.util.*;
+
+class A_testLocalVarName_in {
+	public static void main(String[] args) {
+		Hashtable table = new Properties();
+		Map map = table;
+		table.put(table,table);
+		table.containsKey(map);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarName_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarName_out.java
new file mode 100644
index 0000000..37ae052
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarName_out.java
@@ -0,0 +1,10 @@
+import java.util.*;
+
+class A_testLocalVarName_in {
+	public static void main(String[] args) {
+		Map table = new Properties();
+		Map map = table;
+		table.put(table,table);
+		table.containsKey(map);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarType_in.java
new file mode 100644
index 0000000..7be90b6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarType_in.java
@@ -0,0 +1,10 @@
+import java.util.*;
+
+class A_testLocalVarType_in {
+	public static void main(String[] args) {
+		Hashtable table = new Properties();
+		Map map = table;
+		table.put(table,table);
+		table.containsKey(map);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarType_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarType_out.java
new file mode 100644
index 0000000..9d3f17b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarType_out.java
@@ -0,0 +1,10 @@
+import java.util.*;
+
+class A_testLocalVarType_in {
+	public static void main(String[] args) {
+		Map table = new Properties();
+		Map map = table;
+		table.put(table,table);
+		table.containsKey(map);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarUse_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarUse_in.java
new file mode 100644
index 0000000..20e284a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarUse_in.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testLocalVarUse_in {
+	public void foo(){
+		ArrayList list = new ArrayList();
+		List list2 = list;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarUse_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarUse_out.java
new file mode 100644
index 0000000..880f2e4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testLocalVarUse_out.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testLocalVarUse_in {
+	public void foo(){
+		AbstractList list = new ArrayList();
+		List list2 = list;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUClass1.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUClass1.java
new file mode 100644
index 0000000..23d87d9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUClass1.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.*;
+
+public class A_testMultiCUClass1 extends A_testMultiCU_in implements A_testMultiCUInterface1 {
+	public void foo(List z){
+		Collection c = z;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUClass2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUClass2.java
new file mode 100644
index 0000000..e6215d3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUClass2.java
@@ -0,0 +1,7 @@
+package p;
+
+import java.util.*;
+
+public class A_testMultiCUClass2 extends A_testMultiCU_in implements A_testMultiCUInterface2 {
+	/* no method foo(List) here */
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUInterface1.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUInterface1.java
new file mode 100644
index 0000000..3bf98b3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUInterface1.java
@@ -0,0 +1,7 @@
+package p;
+
+import java.util.*;
+
+public interface A_testMultiCUInterface1 {
+	public void foo(List y1);
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUInterface2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUInterface2.java
new file mode 100644
index 0000000..81752ca
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCUInterface2.java
@@ -0,0 +1,7 @@
+package p;
+
+import java.util.*;
+
+public interface A_testMultiCUInterface2 {
+	public void foo(List y2);
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCU_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCU_in.java
new file mode 100644
index 0000000..0ee53b8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCU_in.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.*;
+
+public class A_testMultiCU_in {
+	public void foo(List x){
+		x = new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCU_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCU_out.java
new file mode 100644
index 0000000..2aae916
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testMultiCU_out.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.*;
+
+public class A_testMultiCU_in {
+	public void foo(Collection x){
+		x = new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricHashtable_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricHashtable_in.java
new file mode 100644
index 0000000..c3a1242
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricHashtable_in.java
@@ -0,0 +1,8 @@
+import java.util.Hashtable;
+import java.util.Vector;
+
+public class A_testNestedParametricHashtable_in {
+	void foo(){
+		Hashtable<String, Vector<Integer>> h = new Hashtable<String, Vector<Integer>>();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricHashtable_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricHashtable_out.java
new file mode 100644
index 0000000..cfb6bf4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricHashtable_out.java
@@ -0,0 +1,9 @@
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.Vector;
+
+public class A_testNestedParametricHashtable_in {
+	void foo(){
+		Dictionary<String, Vector<Integer>> h = new Hashtable<String, Vector<Integer>>();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricType_in.java
new file mode 100644
index 0000000..38036c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricType_in.java
@@ -0,0 +1,7 @@
+import java.util.Vector;
+
+public class A_testNestedParametricType_in {
+	void foo(){
+		Vector<Vector<String>> v = new Vector<Vector<String>>();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricType_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricType_out.java
new file mode 100644
index 0000000..cb4800c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedParametricType_out.java
@@ -0,0 +1,8 @@
+import java.util.AbstractCollection;
+import java.util.Vector;
+
+public class A_testNestedParametricType_in {
+	void foo(){
+		AbstractCollection<Vector<String>> v = new Vector<Vector<String>>();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedRawParametricHashtable_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedRawParametricHashtable_in.java
new file mode 100644
index 0000000..e7e18fb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedRawParametricHashtable_in.java
@@ -0,0 +1,8 @@
+import java.util.Hashtable;
+import java.util.Vector;
+
+public class A_testNestedRawParametricHashtable_in {
+	void foo(){
+		Hashtable<String, Vector> h = new Hashtable<String, Vector>();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedRawParametricHashtable_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedRawParametricHashtable_out.java
new file mode 100644
index 0000000..8c44692
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNestedRawParametricHashtable_out.java
@@ -0,0 +1,9 @@
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.Vector;
+
+public class A_testNestedRawParametricHashtable_in {
+	void foo(){
+		Dictionary<String, Vector> h = new Hashtable<String, Vector>();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonParametricTypeWithParametricSuperType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonParametricTypeWithParametricSuperType_in.java
new file mode 100644
index 0000000..c71a966
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonParametricTypeWithParametricSuperType_in.java
@@ -0,0 +1,7 @@
+import java.util.List;
+
+public class A_testNonParametricTypeWithParametricSuperType_in {
+	void foo(){
+		String x = "huh";
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonParametricTypeWithParametricSuperType_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonParametricTypeWithParametricSuperType_out.java
new file mode 100644
index 0000000..b702b1e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonParametricTypeWithParametricSuperType_out.java
@@ -0,0 +1,7 @@
+import java.util.List;
+
+public class A_testNonParametricTypeWithParametricSuperType_in {
+	void foo(){
+		Comparable<String> x = "huh";
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonRawComment_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonRawComment_in.java
new file mode 100644
index 0000000..e9a93bb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonRawComment_in.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testNonRawComment_in {
+	<T> void  foo(){
+		  Set<String>/*blah*/ x = new HashSet<String>();
+		  x.add("");
+		}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonRawComment_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonRawComment_out.java
new file mode 100644
index 0000000..6b16b48
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testNonRawComment_out.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testNonRawComment_in {
+	<T> void  foo(){
+		  Collection<String>/*blah*/ x = new HashSet<String>();
+		  x.add("");
+		}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDeclWithOverride_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDeclWithOverride_in.java
new file mode 100644
index 0000000..427d9d7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDeclWithOverride_in.java
@@ -0,0 +1,14 @@
+import java.util.*;
+
+class A_testParameterDeclWithOverride_in {
+	static class X {
+		public void foo(AbstractList v1){
+			Collection c = v1;
+		}
+	}
+	static class Y extends X {
+		public void foo(AbstractList v2){
+			v2 = new ArrayList();
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDeclWithOverride_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDeclWithOverride_out.java
new file mode 100644
index 0000000..066e8ee
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDeclWithOverride_out.java
@@ -0,0 +1,14 @@
+import java.util.*;
+
+class A_testParameterDeclWithOverride_in {
+	static class X {
+		public void foo(AbstractCollection v1){
+			Collection c = v1;
+		}
+	}
+	static class Y extends X {
+		public void foo(AbstractCollection v2){
+			v2 = new ArrayList();
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDecl_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDecl_in.java
new file mode 100644
index 0000000..75389de
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDecl_in.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testParameterDecl_in {
+	public void foo(Hashtable table){
+		table = new Hashtable();
+		table.put("foo", "bar");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDecl_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDecl_out.java
new file mode 100644
index 0000000..193f938
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterDecl_out.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testParameterDecl_in {
+	public void foo(Map table){
+		table = new Hashtable();
+		table.put("foo", "bar");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterNameWithOverride_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterNameWithOverride_in.java
new file mode 100644
index 0000000..bacb43f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterNameWithOverride_in.java
@@ -0,0 +1,14 @@
+import java.util.*;
+
+class A_testParameterNameWithOverride_in {
+	static class X {
+		public void foo(AbstractList v1){
+			Collection c = v1;
+		}
+	}
+	static class Y extends X {
+		public void foo(AbstractList v2){
+			v2 = new ArrayList();
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterNameWithOverride_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterNameWithOverride_out.java
new file mode 100644
index 0000000..51a0e9c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterNameWithOverride_out.java
@@ -0,0 +1,14 @@
+import java.util.*;
+
+class A_testParameterNameWithOverride_in {
+	static class X {
+		public void foo(Collection v1){
+			Collection c = v1;
+		}
+	}
+	static class Y extends X {
+		public void foo(Collection v2){
+			v2 = new ArrayList();
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterName_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterName_in.java
new file mode 100644
index 0000000..b88497c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterName_in.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testParameterName_in {
+	public void foo(Hashtable table){
+		table = new Hashtable();
+		table.put("foo", "bar");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterName_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterName_out.java
new file mode 100644
index 0000000..5189183
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterName_out.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testParameterName_in {
+	public void foo(Map table){
+		table = new Hashtable();
+		table.put("foo", "bar");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverride_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverride_in.java
new file mode 100644
index 0000000..00796bb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverride_in.java
@@ -0,0 +1,14 @@
+import java.util.*;
+
+class A_testParameterTypeWithOverride_in {
+	static class X {
+		public void foo(AbstractList v1){
+			Collection c = v1;
+		}
+	}
+	static class Y extends X {
+		public void foo(AbstractList v2){
+			v2 = new ArrayList();
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverride_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverride_out.java
new file mode 100644
index 0000000..f66f2d8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverride_out.java
@@ -0,0 +1,14 @@
+import java.util.*;
+
+class A_testParameterTypeWithOverride_in {
+	static class X {
+		public void foo(List v1){
+			Collection c = v1;
+		}
+	}
+	static class Y extends X {
+		public void foo(List v2){
+			v2 = new ArrayList();
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding2.java
new file mode 100644
index 0000000..8d79d00
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding2.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.*;
+
+public class A_testParameterTypeWithOverriding2 extends A_testParameterTypeWithOverriding_in {
+	public void foo(List list2){
+		Collection c = list2;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding2_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding2_out.java
new file mode 100644
index 0000000..8d79d00
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding2_out.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.*;
+
+public class A_testParameterTypeWithOverriding2 extends A_testParameterTypeWithOverriding_in {
+	public void foo(List list2){
+		Collection c = list2;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding_in.java
new file mode 100644
index 0000000..3db6fb0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding_in.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.*;
+
+public class A_testParameterTypeWithOverriding_in {
+	public void foo(List list){
+		list = new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding_out.java
new file mode 100644
index 0000000..9176fa4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterTypeWithOverriding_out.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.*;
+
+public class A_testParameterTypeWithOverriding_in {
+	public void foo(Collection list){
+		list = new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterType_in.java
new file mode 100644
index 0000000..da71728
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterType_in.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testParameterType_in {
+	public void foo(Hashtable table){
+		table = new Hashtable();
+		table.put("foo", "bar");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterType_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterType_out.java
new file mode 100644
index 0000000..a1bc569
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParameterType_out.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testParameterType_in {
+	public void foo(Dictionary table){
+		table = new Hashtable();
+		table.put("foo", "bar");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricEmptySelection_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricEmptySelection_in.java
new file mode 100644
index 0000000..5ed31eb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricEmptySelection_in.java
@@ -0,0 +1,24 @@
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+
+public class A_testParametricEmptySelection_in {
+    String fValue2 = "Eclipse";
+    List<String> fValue = Arrays.asList("Eclipse");
+    
+    String test(String arg) { return null;}
+    List<String> test2(java.util.List<Object> aList, List<Object> l){
+        return null;
+    }
+    Vector foo(BBB aaa){
+    	List<String> xx = null;
+    	return null;
+    }
+}
+
+class AAA {
+	
+}
+class BBB extends AAA {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricEmptySelection_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricEmptySelection_out.java
new file mode 100644
index 0000000..d4d8677
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricEmptySelection_out.java
@@ -0,0 +1,24 @@
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+
+public class A_testParametricEmptySelection_in {
+    String fValue2 = "Eclipse";
+    Iterable<String> fValue = Arrays.asList("Eclipse");
+    
+    String test(String arg) { return null;}
+    List<String> test2(java.util.List<Object> aList, List<Object> l){
+        return null;
+    }
+    Vector foo(BBB aaa){
+    	List<String> xx = null;
+    	return null;
+    }
+}
+
+class AAA {
+	
+}
+class BBB extends AAA {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricField_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricField_in.java
new file mode 100644
index 0000000..381a2ef
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricField_in.java
@@ -0,0 +1,8 @@
+import java.util.ArrayList;
+import java.util.List;
+
+// see bug #94715
+public class A_testParametricField_in {
+	ArrayList<Integer> al = new ArrayList<Integer>();	
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricField_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricField_out.java
new file mode 100644
index 0000000..789bb57
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricField_out.java
@@ -0,0 +1,8 @@
+import java.util.ArrayList;
+import java.util.List;
+
+// see bug #94715
+public class A_testParametricField_in {
+	Iterable<Integer> al = new ArrayList<Integer>();	
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricHashtable_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricHashtable_in.java
new file mode 100644
index 0000000..717fc98
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricHashtable_in.java
@@ -0,0 +1,7 @@
+import java.util.Hashtable;
+
+public class A_testParametricHashtable_in {
+	void foo(){
+		Hashtable<String, Integer> h = new Hashtable<String, Integer>();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricHashtable_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricHashtable_out.java
new file mode 100644
index 0000000..96fa7ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricHashtable_out.java
@@ -0,0 +1,8 @@
+import java.util.Hashtable;
+import java.util.Map;
+
+public class A_testParametricHashtable_in {
+	void foo(){
+		Map<String, Integer> h = new Hashtable<String, Integer>();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricLocalVar_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricLocalVar_in.java
new file mode 100644
index 0000000..70e10a0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricLocalVar_in.java
@@ -0,0 +1,24 @@
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+
+public class A_testParametricLocalVar_in {
+    String fValue2 = "Eclipse";
+    List<String> fValue = Arrays.asList("Eclipse");
+    
+    String test(String arg) { return null;}
+    List<String> test2(java.util.List<Object> aList, List<Object> l){
+        return null;
+    }
+    Vector foo(BBB aaa){
+    	List<String> xx = null;
+    	return null;
+    }
+}
+
+class AAA {
+	
+}
+class BBB extends AAA {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricLocalVar_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricLocalVar_out.java
new file mode 100644
index 0000000..9f43263
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricLocalVar_out.java
@@ -0,0 +1,24 @@
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+
+public class A_testParametricLocalVar_in {
+    String fValue2 = "Eclipse";
+    List<String> fValue = Arrays.asList("Eclipse");
+    
+    String test(String arg) { return null;}
+    List<String> test2(java.util.List<Object> aList, List<Object> l){
+        return null;
+    }
+    Vector foo(BBB aaa){
+    	Iterable<String> xx = null;
+    	return null;
+    }
+}
+
+class AAA {
+	
+}
+class BBB extends AAA {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricParameter_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricParameter_in.java
new file mode 100644
index 0000000..d203963
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricParameter_in.java
@@ -0,0 +1,24 @@
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+
+public class A_testParametricParameter_in {
+    String fValue2 = "Eclipse";
+    List<String> fValue = Arrays.asList("Eclipse");
+    
+    String test(String arg) { return null;}
+    List<String> test2(java.util.List<Object> aList, List<Object> l){
+        return null;
+    }
+    Vector foo(BBB aaa){
+    	List<String> xx = null;
+    	return null;
+    }
+}
+
+class AAA {
+	
+}
+class BBB extends AAA {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricParameter_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricParameter_out.java
new file mode 100644
index 0000000..d4165d8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricParameter_out.java
@@ -0,0 +1,24 @@
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+
+public class A_testParametricParameter_in {
+    String fValue2 = "Eclipse";
+    List<String> fValue = Arrays.asList("Eclipse");
+    
+    String test(String arg) { return null;}
+    List<String> test2(java.util.List<Object> aList, Iterable<Object> l){
+        return null;
+    }
+    Vector foo(BBB aaa){
+    	List<String> xx = null;
+    	return null;
+    }
+}
+
+class AAA {
+	
+}
+class BBB extends AAA {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricReturnType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricReturnType_in.java
new file mode 100644
index 0000000..b333658
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricReturnType_in.java
@@ -0,0 +1,13 @@
+import java.util.Vector;
+
+//see bug #94715
+public class A_testParametricReturnType_in {
+	public Vector<String> foo() {
+		return new Vector<String>();
+	}
+	public Vector bar(){
+		return new Vector();
+	}
+	
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricReturnType_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricReturnType_out.java
new file mode 100644
index 0000000..a72c796
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricReturnType_out.java
@@ -0,0 +1,13 @@
+import java.util.Vector;
+
+//see bug #94715
+public class A_testParametricReturnType_in {
+	public Iterable<String> foo() {
+		return new Vector<String>();
+	}
+	public Vector bar(){
+		return new Vector();
+	}
+	
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithNonParametricSuperType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithNonParametricSuperType_in.java
new file mode 100644
index 0000000..0b510c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithNonParametricSuperType_in.java
@@ -0,0 +1,7 @@
+import java.util.List;
+
+public class A_testParametricTypeWithNonParametricSuperType_in {
+	void foo(){
+		List<String> x = null;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithNonParametricSuperType_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithNonParametricSuperType_out.java
new file mode 100644
index 0000000..c3a107d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithNonParametricSuperType_out.java
@@ -0,0 +1,7 @@
+import java.util.List;
+
+public class A_testParametricTypeWithNonParametricSuperType_in {
+	void foo(){
+		Object x = null;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithParametricSuperType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithParametricSuperType_in.java
new file mode 100644
index 0000000..ad69fae
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithParametricSuperType_in.java
@@ -0,0 +1,7 @@
+import java.util.List;
+
+public class A_testParametricTypeWithParametricSuperType_in {
+	void foo(){
+		List<String> x = null;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithParametricSuperType_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithParametricSuperType_out.java
new file mode 100644
index 0000000..3b78cfe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testParametricTypeWithParametricSuperType_out.java
@@ -0,0 +1,8 @@
+import java.util.Collection;
+import java.util.List;
+
+public class A_testParametricTypeWithParametricSuperType_in {
+	void foo(){
+		Collection<String> x = null;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testQualifiedNameEmptySelection_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testQualifiedNameEmptySelection_in.java
new file mode 100644
index 0000000..cc6da78
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testQualifiedNameEmptySelection_in.java
@@ -0,0 +1,24 @@
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+
+public class A_testQualifiedNameEmptySelection_in {
+    String fValue2 = "Eclipse";
+    Iterable<String> fValue = Arrays.asList("Eclipse");
+    
+    String test(String arg) { return null;}
+    List<String> test2(java.util.List<Object> aList, List<Object> l){
+        return null;
+    }
+    Vector foo(BBB aaa){
+    	List<String> xx = null;
+    	return null;
+    }
+}
+
+class AAA {
+	
+}
+class BBB extends AAA {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testQualifiedNameEmptySelection_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testQualifiedNameEmptySelection_out.java
new file mode 100644
index 0000000..65fc96b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testQualifiedNameEmptySelection_out.java
@@ -0,0 +1,24 @@
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+
+public class A_testQualifiedNameEmptySelection_in {
+    String fValue2 = "Eclipse";
+    Iterable<String> fValue = Arrays.asList("Eclipse");
+    
+    String test(String arg) { return null;}
+    List<String> test2(Iterable<Object> aList, List<Object> l){
+        return null;
+    }
+    Vector foo(BBB aaa){
+    	List<String> xx = null;
+    	return null;
+    }
+}
+
+class AAA {
+	
+}
+class BBB extends AAA {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawComment_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawComment_in.java
new file mode 100644
index 0000000..0494182
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawComment_in.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testRawComment_in {
+	<T> void  foo(){
+		  Set/*<String>*/ x= new HashSet();
+		  x.add("");
+		}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawComment_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawComment_out.java
new file mode 100644
index 0000000..469a34a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawComment_out.java
@@ -0,0 +1,8 @@
+import java.util.*;
+
+class A_testRawComment_in {
+	<T> void  foo(){
+		  Collection/*<String>*/ x= new HashSet();
+		  x.add("");
+		}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawSubType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawSubType_in.java
new file mode 100644
index 0000000..452ea36
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawSubType_in.java
@@ -0,0 +1,8 @@
+public class A_testRawSubType_in {
+	void foo(Interface i){
+		Comparable c= i.getName();
+	}
+}
+interface Interface {
+	String getName();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawSubType_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawSubType_out.java
new file mode 100644
index 0000000..808349e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testRawSubType_out.java
@@ -0,0 +1,8 @@
+public class A_testRawSubType_in {
+	void foo(Interface i){
+		Comparable c= i.getName();
+	}
+}
+interface Interface {
+	Comparable<String> getName();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReorderTypeParameters_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReorderTypeParameters_in.java
new file mode 100644
index 0000000..9bbbe07
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReorderTypeParameters_in.java
@@ -0,0 +1,10 @@
+import java.util.Vector;
+
+public class A_testReorderTypeParameters_in {
+	void foo(){
+		Vector v = new Vector();
+		B<String, Integer> x = new B<String, Integer>();
+	}
+}
+class A<T1,T2> { }
+class B<T3,T4> extends A<T4,T3> { }
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReorderTypeParameters_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReorderTypeParameters_out.java
new file mode 100644
index 0000000..84fe23b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReorderTypeParameters_out.java
@@ -0,0 +1,10 @@
+import java.util.Vector;
+
+public class A_testReorderTypeParameters_in {
+	void foo(){
+		Vector v = new Vector();
+		A<Integer, String> x = new B<String, Integer>();
+	}
+}
+class A<T1,T2> { }
+class B<T3,T4> extends A<T4,T3> { }
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnType2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnType2.java
new file mode 100644
index 0000000..527bb43
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnType2.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.util.*;
+
+public class A_testReturnType2 {
+	void bar(){
+		A_testReturnType_in ww = new A_testReturnType_in();
+		Object pp = ww.foo();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnTypeWithCall_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnTypeWithCall_in.java
new file mode 100644
index 0000000..cbed2e5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnTypeWithCall_in.java
@@ -0,0 +1,10 @@
+import java.util.*;
+
+class A_testReturnTypeWithCall_in {
+	public ArrayList foo(){
+		return new ArrayList();
+	}
+	public void bar(){
+		List l = this.foo();	
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnTypeWithCall_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnTypeWithCall_out.java
new file mode 100644
index 0000000..7f0b8ad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnTypeWithCall_out.java
@@ -0,0 +1,10 @@
+import java.util.*;
+
+class A_testReturnTypeWithCall_in {
+	public AbstractList foo(){
+		return new ArrayList();
+	}
+	public void bar(){
+		List l = this.foo();	
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnType_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnType_in.java
new file mode 100644
index 0000000..7b0bfd1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnType_in.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.*;
+
+class A_testReturnType_in {
+	public List foo(){
+		return new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnType_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnType_out.java
new file mode 100644
index 0000000..139f62d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testReturnType_out.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.*;
+
+class A_testReturnType_in {
+	public Collection foo(){
+		return new ArrayList();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testString_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testString_in.java
new file mode 100644
index 0000000..1db9bd5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testString_in.java
@@ -0,0 +1,7 @@
+
+class A_testString_in {
+	public static void bar(){
+		String s = new String();
+		s.toString();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testString_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testString_out.java
new file mode 100644
index 0000000..d96ed24
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testString_out.java
@@ -0,0 +1,7 @@
+
+class A_testString_in {
+	public static void bar(){
+		Object s = new String();
+		s.toString();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnboundTypeParameter_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnboundTypeParameter_in.java
new file mode 100644
index 0000000..ca64c8d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnboundTypeParameter_in.java
@@ -0,0 +1,7 @@
+import java.util.List;
+
+public class A_testUnboundTypeParameter_in {
+	public <T> void baz() {
+		List<T> list= null;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnboundTypeParameter_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnboundTypeParameter_out.java
new file mode 100644
index 0000000..0bd678d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnboundTypeParameter_out.java
@@ -0,0 +1,7 @@
+import java.util.List;
+
+public class A_testUnboundTypeParameter_in {
+	public <T> void baz() {
+		Iterable<T> list= null;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnrelatedTypeParameters_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnrelatedTypeParameters_in.java
new file mode 100644
index 0000000..113522f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnrelatedTypeParameters_in.java
@@ -0,0 +1,8 @@
+public class A_testUnrelatedTypeParameters_in {
+	void foo(){
+		G<Integer> e = new G<Integer>();
+	}
+}
+class E<T>{ }
+class F extends E<String>{ }
+class G<U> extends F { }
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnrelatedTypeParameters_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnrelatedTypeParameters_out.java
new file mode 100644
index 0000000..02482be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testUnrelatedTypeParameters_out.java
@@ -0,0 +1,8 @@
+public class A_testUnrelatedTypeParameters_in {
+	void foo(){
+		E<String> e = new G<Integer>();
+	}
+}
+class E<T>{ }
+class F extends E<String>{ }
+class G<U> extends F { }
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testVarArg2_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testVarArg2_in.java
new file mode 100644
index 0000000..99310e5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testVarArg2_in.java
@@ -0,0 +1,6 @@
+public class A_testVarArg2_in {
+    void m(Integer one) {
+        var(one);
+    }
+    void var(Integer... as) { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testVarArg_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testVarArg_in.java
new file mode 100644
index 0000000..bf15aa5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testVarArg_in.java
@@ -0,0 +1,11 @@
+import java.io.*;
+
+public class A_testVarArg_in {
+	public void checkTrue() {
+		Integer i= linesPass("B", "A"); // generalize i
+	}
+	
+	private Integer linesPass(String... lines) {
+		return 1;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testVarArg_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testVarArg_out.java
new file mode 100644
index 0000000..6d1fe70
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ChangeTypeRefactoring/positive/A_testVarArg_out.java
@@ -0,0 +1,11 @@
+import java.io.*;
+
+public class A_testVarArg_in {
+	public void checkTrue() {
+		Object i= linesPass("B", "A"); // generalize i
+	}
+	
+	private Integer linesPass(String... lines) {
+		return 1;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test0_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test0_in.java
new file mode 100644
index 0000000..f24aa7c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test0_in.java
@@ -0,0 +1,7 @@
+package p;
+//private, static, final
+class A{
+	void f(){
+		new A(){};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test0_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test0_out.java
new file mode 100644
index 0000000..501f134
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test0_out.java
@@ -0,0 +1,10 @@
+package p;
+//private, static, final
+class A{
+	private final class Inner extends A {
+	}
+
+	void f(){
+		new Inner();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test10_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test10_in.java
new file mode 100644
index 0000000..17e86da
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test10_in.java
@@ -0,0 +1,14 @@
+package p;
+//private, static, final
+class A{
+	A(int i){
+	}
+	void f(){
+		new A(1){
+			void f(){
+				x();
+			}
+		};
+	}
+	static void x(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test10_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test10_out.java
new file mode 100644
index 0000000..7bd4647
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test10_out.java
@@ -0,0 +1,18 @@
+package p;
+//private, static, final
+class A{
+	private final class Inner extends A {
+		private Inner(int i) {
+			super(i);
+		}
+		void f(){
+			x();
+		}
+	}
+	A(int i){
+	}
+	void f(){
+		new Inner(1);
+	}
+	static void x(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test11_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test11_in.java
new file mode 100644
index 0000000..bcf9c61
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test11_in.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	void f(){
+		final int u= 9;
+		new A(){
+			int k= u;
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test11_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test11_out.java
new file mode 100644
index 0000000..2c372bc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test11_out.java
@@ -0,0 +1,16 @@
+package p;
+class A{
+	private final class Inner extends A {
+		private final int u;
+		int k;
+		private Inner(int u) {
+			this.u= u;
+			k= u;
+		}
+	}
+
+	void f(){
+		final int u= 9;
+		new Inner(u);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test12_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test12_in.java
new file mode 100644
index 0000000..b3e2851
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test12_in.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+	A(int x){
+	}
+	void f(){
+		final int u= 9;
+		int s= 2;
+		new A(s){
+			int k= u;
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test12_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test12_out.java
new file mode 100644
index 0000000..6d9e8ed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test12_out.java
@@ -0,0 +1,19 @@
+package p;
+class A{
+	private final class Inner extends A {
+		private final int u;
+		int k;
+		private Inner(int x, int u) {
+			super(x);
+			this.u= u;
+			k= u;
+		}
+	}
+	A(int x){
+	}
+	void f(){
+		final int u= 9;
+		int s= 2;
+		new Inner(s, u);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test13_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test13_in.java
new file mode 100644
index 0000000..3a0d387
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test13_in.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	A(Object s){}
+	void f(){
+		class Local{}
+		new A(new Local()){
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test13_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test13_out.java
new file mode 100644
index 0000000..be04509
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test13_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	private final class Inner extends A {
+		private Inner(Object s) {
+			super(s);
+		}
+	}
+	A(Object s){}
+	void f(){
+		class Local{}
+		new Inner(new Local());
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test14_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test14_in.java
new file mode 100644
index 0000000..44ac387
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test14_in.java
@@ -0,0 +1,7 @@
+package p;
+//private, static, final
+class A{
+	void f(){
+		new Object(){};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test14_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test14_out.java
new file mode 100644
index 0000000..53a64d3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test14_out.java
@@ -0,0 +1,10 @@
+package p;
+//private, static, final
+class A{
+	private final class Inner {
+	}
+
+	void f(){
+		new Inner();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test15_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test15_in.java
new file mode 100644
index 0000000..6feac7b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test15_in.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.util.ArrayList;
+
+class A{
+	void g(){
+		new ArrayList(6){
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test15_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test15_out.java
new file mode 100644
index 0000000..6783e2d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test15_out.java
@@ -0,0 +1,15 @@
+package p;
+
+import java.util.ArrayList;
+
+class A{
+	private final class Inner extends ArrayList {
+		private Inner(int arg0) {
+			super(arg0);
+		}
+	}
+
+	void g(){
+		new Inner(6);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test16_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test16_in.java
new file mode 100644
index 0000000..176d1cf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test16_in.java
@@ -0,0 +1,10 @@
+package p;
+class A {
+	void f(){
+		new Comparable(){
+			public int compareTo(Object other) {
+				return 0;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test16_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test16_out.java
new file mode 100644
index 0000000..36f5608
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test16_out.java
@@ -0,0 +1,12 @@
+package p;
+class A {
+	private final class Inner implements Comparable {
+		public int compareTo(Object other) {
+			return 0;
+		}
+	}
+
+	void f(){
+		new Inner();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test17_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test17_in.java
new file mode 100644
index 0000000..3612339
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test17_in.java
@@ -0,0 +1,9 @@
+package p;
+class A {
+	A(Object x){
+	}
+	void f(){
+		new A(this){
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test17_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test17_out.java
new file mode 100644
index 0000000..42c8e2a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test17_out.java
@@ -0,0 +1,13 @@
+package p;
+class A {
+	private final class Inner extends A {
+		private Inner(Object x) {
+			super(x);
+		}
+	}
+	A(Object x){
+	}
+	void f(){
+		new Inner(this);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test18_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test18_in.java
new file mode 100644
index 0000000..db38aa6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test18_in.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	void f(){
+		final int u= 9;
+		new A(){
+			void g(){
+				int uj= u;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test18_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test18_out.java
new file mode 100644
index 0000000..bd2fda4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test18_out.java
@@ -0,0 +1,17 @@
+package p;
+class A{
+	private final class Inner extends A {
+		private final int u;
+		private Inner(int u) {
+			this.u= u;
+		}
+		void g(){
+			int uj= u;
+		}
+	}
+
+	void f(){
+		final int u= 9;
+		new Inner(u);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test19_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test19_in.java
new file mode 100644
index 0000000..37303db
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test19_in.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	void f(){
+		final int u= 8;
+		new A(){
+			int l= 9;
+			int p0= 2, k= u, k1= k;
+			int l1= l+1, p, q= p+u;
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test19_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test19_out.java
new file mode 100644
index 0000000..31d3b0d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test19_out.java
@@ -0,0 +1,20 @@
+package p;
+class A{
+	private final class Inner extends A {
+		private final int u;
+		int l= 9;
+		int p0= 2, k, k1;
+		int l1= l+1, p, q;
+		private Inner(int u) {
+			this.u= u;
+			k= u;
+			k1= k;
+			q= p+u;
+		}
+	}
+
+	void f(){
+		final int u= 8;
+		new Inner(u);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test1_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test1_in.java
new file mode 100644
index 0000000..c567910
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test1_in.java
@@ -0,0 +1,7 @@
+package p;
+//public, static, final
+class A{
+	void f(){
+		new A(){};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test1_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test1_out.java
new file mode 100644
index 0000000..8db3e50
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test1_out.java
@@ -0,0 +1,10 @@
+package p;
+//public, static, final
+class A{
+	public final class Inner extends A {
+	}
+
+	void f(){
+		new Inner();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test20_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test20_in.java
new file mode 100644
index 0000000..ab963b8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test20_in.java
@@ -0,0 +1,11 @@
+package p;
+class A {
+	public void foo() {
+		A foo= new A() {
+			public void bar() {
+					// TODO the return is misaligned
+	return;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test20_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test20_out.java
new file mode 100644
index 0000000..bae6c85
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test20_out.java
@@ -0,0 +1,13 @@
+package p;
+class A {
+	private final class Inner extends A {
+		public void bar() {
+				// TODO the return is misaligned
+return;
+		}
+	}
+
+	public void foo() {
+		A foo= new Inner();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test21_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test21_in.java
new file mode 100644
index 0000000..8a0519e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test21_in.java
@@ -0,0 +1,10 @@
+package p;
+class A {
+	public static void foo() {
+		A foo= new A() {
+			public void bar() {
+				return;
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test21_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test21_out.java
new file mode 100644
index 0000000..06b73ed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test21_out.java
@@ -0,0 +1,12 @@
+package p;
+class A {
+	private static final class Inner extends A {
+		public void bar() {
+			return;
+		}
+	}
+
+	public static void foo() {
+		A foo= new Inner();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test22_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test22_in.java
new file mode 100644
index 0000000..407e4e6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test22_in.java
@@ -0,0 +1,16 @@
+package p;
+class A {
+	interface I	{
+		void bar();
+	}
+	public static void foo(){
+		I foo= new I() {
+			public void bar() {
+				I foo = new I() {
+					public void bar(){
+					}
+				};
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test22_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test22_out.java
new file mode 100644
index 0000000..b3e88b8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test22_out.java
@@ -0,0 +1,17 @@
+package p;
+class A {
+	private static final class Inner implements I {
+		public void bar(){
+		}
+	}
+	interface I	{
+		void bar();
+	}
+	public static void foo(){
+		I foo= new I() {
+			public void bar() {
+				I foo = new Inner();
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test23_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test23_in.java
new file mode 100644
index 0000000..488a62c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test23_in.java
@@ -0,0 +1,10 @@
+package p;
+class A {
+	public static void foo1(){
+		A foo = new A()	{
+			public void foo(){
+				A foo = new A(){};
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test23_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test23_out.java
new file mode 100644
index 0000000..734562e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test23_out.java
@@ -0,0 +1,13 @@
+package p;
+class A {
+	private final class Inner extends A {
+	}
+
+	public static void foo1(){
+		A foo = new A()	{
+			public void foo(){
+				A foo = new Inner();
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test24_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test24_in.java
new file mode 100644
index 0000000..41428c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test24_in.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	static A a = new A(){
+		public void foo(){
+		}
+	};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test24_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test24_out.java
new file mode 100644
index 0000000..b786337
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test24_out.java
@@ -0,0 +1,9 @@
+package p;
+class A {
+	private static final class Inner extends A {
+		public void foo(){
+		}
+	}
+
+	static A a = new Inner();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test25_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test25_in.java
new file mode 100644
index 0000000..17059d8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test25_in.java
@@ -0,0 +1,15 @@
+package p;
+class A {
+	interface I{
+		void foo();
+	}
+	static A i = new A(){
+		public void foo(){
+			I i = new I() {
+				public void foo(){
+					
+				}
+			};
+		}
+	};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test25_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test25_out.java
new file mode 100644
index 0000000..bce37ae
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test25_out.java
@@ -0,0 +1,16 @@
+package p;
+class A {
+	private final class Inner implements I {
+		public void foo(){
+			
+		}
+	}
+	interface I{
+		void foo();
+	}
+	static A i = new A(){
+		public void foo(){
+			I i = new Inner();
+		}
+	};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test26_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test26_in.java
new file mode 100644
index 0000000..3fd6378
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test26_in.java
@@ -0,0 +1,15 @@
+package p;
+class A {
+	interface I{
+		void foo();
+	}
+	static I i = new I(){
+		public void foo(){
+			I i = new I() {
+				public void foo(){
+					
+				}
+			};
+		}
+	};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test26_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test26_out.java
new file mode 100644
index 0000000..236d9ad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test26_out.java
@@ -0,0 +1,16 @@
+package p;
+class A {
+	private static final class Inner implements I {
+		public void foo(){
+			
+		}
+	}
+	interface I{
+		void foo();
+	}
+	static I i = new I(){
+		public void foo(){
+			I i = new Inner();
+		}
+	};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test27_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test27_in.java
new file mode 100644
index 0000000..df8ef5a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test27_in.java
@@ -0,0 +1,20 @@
+package p;
+class A {
+	interface I{
+		void foo();
+	}
+	static void foo1(){
+		new A(){
+			void foo(){
+				I i = new I(){
+					public void foo(){
+						I i = new I(){
+							public void foo(){
+							}
+						};
+					}
+				};
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test27_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test27_out.java
new file mode 100644
index 0000000..d5dd8c6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test27_out.java
@@ -0,0 +1,21 @@
+package p;
+class A {
+	private final class Inner implements I {
+		public void foo(){
+		}
+	}
+	interface I{
+		void foo();
+	}
+	static void foo1(){
+		new A(){
+			void foo(){
+				I i = new I(){
+					public void foo(){
+						I i = new Inner();
+					}
+				};
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test28_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test28_in.java
new file mode 100644
index 0000000..4ede75f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test28_in.java
@@ -0,0 +1,13 @@
+package p;
+class A {
+	public static class B extends A {
+		public void foo(){
+		}
+	}
+	
+	static B b = new B() {
+		public void foo() {
+			B b = new B(){};
+		}
+	};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test28_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test28_out.java
new file mode 100644
index 0000000..6440a3e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test28_out.java
@@ -0,0 +1,16 @@
+package p;
+class A {
+	private final class Inner extends B {
+	}
+
+	public static class B extends A {
+		public void foo(){
+		}
+	}
+	
+	static B b = new B() {
+		public void foo() {
+			B b = new Inner();
+		}
+	};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test29_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test29_in.java
new file mode 100644
index 0000000..a9cadf8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test29_in.java
@@ -0,0 +1,12 @@
+package p;
+class A {
+	private final Integer fTarget= null;
+
+	void test() {
+		new Runnable() {
+			public void run() {
+				fTarget.intValue();
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test29_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test29_out.java
new file mode 100644
index 0000000..ee847b3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test29_out.java
@@ -0,0 +1,14 @@
+package p;
+class A {
+	private final class Inner implements Runnable {
+		public void run() {
+			fTarget.intValue();
+		}
+	}
+
+	private final Integer fTarget= null;
+
+	void test() {
+		new Inner();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test2_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test2_in.java
new file mode 100644
index 0000000..f37423a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test2_in.java
@@ -0,0 +1,7 @@
+package p;
+//public, nonstatic, final
+class A{
+	void f(){
+		new A(){};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test2_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test2_out.java
new file mode 100644
index 0000000..d8358e2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test2_out.java
@@ -0,0 +1,10 @@
+package p;
+//public, nonstatic, final
+class A{
+	public final class Inner extends A {
+	}
+
+	void f(){
+		new Inner();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test30_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test30_in.java
new file mode 100644
index 0000000..e13276a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test30_in.java
@@ -0,0 +1,11 @@
+package p;
+public class A {
+    void m() {
+        Runnable greeter= new Runnable() {
+            public void run() {
+                System.out.println("Hello World")
+            }
+        };
+        greeter.run();
+    
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test30_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test30_out.java
new file mode 100644
index 0000000..27b9704
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test30_out.java
@@ -0,0 +1,13 @@
+package p;
+public class A {
+    private static final class Greeter implements Runnable {
+		public void run() {
+		    System.out.println("Hello World")
+		}
+	}
+
+	void m() {
+        Runnable greeter= new Greeter();
+        greeter.run();
+    
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test31_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test31_in.java
new file mode 100644
index 0000000..7928c90
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test31_in.java
@@ -0,0 +1,16 @@
+package p;
+public class A {
+
+	class Inner1 {
+		public Inner1(int param) {			
+		}		
+	}
+	
+	public void doit(final int a, final String param) {
+		Object o = new Inner1(a) {
+			public void m1(String s2) {
+				String s3 = param + s2;
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test31_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test31_out.java
new file mode 100644
index 0000000..fee8950
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test31_out.java
@@ -0,0 +1,23 @@
+package p;
+public class A {
+
+	private final class Inner1Extension extends Inner1 {
+		private final String param;
+		private Inner1Extension(int param, String param2) {
+			super(param);
+			this.param= param2;
+		}
+		public void m1(String s2) {
+			String s3 = param + s2;
+		}
+	}
+
+	class Inner1 {
+		public Inner1(int param) {			
+		}		
+	}
+	
+	public void doit(final int a, final String param) {
+		Object o = new Inner1Extension(a, param);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test32_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test32_in.java
new file mode 100644
index 0000000..d0d6d77
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test32_in.java
@@ -0,0 +1,16 @@
+package p;
+public class A {
+
+	class Inner1 {
+		public Inner1(int... param) {			
+		}		
+	}
+	
+	public void doit(final String param) {
+		Object o = new Inner1(1, 2) {
+			public void m1(String s2) {
+				String s3 = param + s2;
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test32_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test32_out.java
new file mode 100644
index 0000000..9fe3fa2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test32_out.java
@@ -0,0 +1,23 @@
+package p;
+public class A {
+
+	private final class Inner1Extension extends Inner1 {
+		private final String param;
+		private Inner1Extension(int[] param, String param2) {
+			super(param);
+			this.param= param2;
+		}
+		public void m1(String s2) {
+			String s3 = param + s2;
+		}
+	}
+
+	class Inner1 {
+		public Inner1(int... param) {			
+		}		
+	}
+	
+	public void doit(final String param) {
+		Object o = new Inner1Extension(new int[]{1, 2}, param);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test3_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test3_in.java
new file mode 100644
index 0000000..9a318b5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test3_in.java
@@ -0,0 +1,7 @@
+package p;
+//public, nonstatic, nonfinal
+class A{
+	void f(){
+		new A(){};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test3_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test3_out.java
new file mode 100644
index 0000000..f02f8b3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test3_out.java
@@ -0,0 +1,10 @@
+package p;
+//public, nonstatic, nonfinal
+class A{
+	public class Inner extends A {
+	}
+
+	void f(){
+		new Inner();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test4_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test4_in.java
new file mode 100644
index 0000000..5a2d397
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test4_in.java
@@ -0,0 +1,9 @@
+package p;
+//private, static, final
+class A{
+	A(){
+	}
+	void f(){
+		new A(){};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test4_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test4_out.java
new file mode 100644
index 0000000..953159c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test4_out.java
@@ -0,0 +1,11 @@
+package p;
+//private, static, final
+class A{
+	private final class Inner extends A {
+	}
+	A(){
+	}
+	void f(){
+		new Inner();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test5_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test5_in.java
new file mode 100644
index 0000000..d2e45d9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test5_in.java
@@ -0,0 +1,9 @@
+package p;
+//private, static, final
+class A{
+	A(int i){
+	}
+	void f(){
+		new A(1){};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test5_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test5_out.java
new file mode 100644
index 0000000..ba6a492
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test5_out.java
@@ -0,0 +1,14 @@
+package p;
+//private, static, final
+class A{
+	private final class Inner extends A {
+		private Inner(int i) {
+			super(i);
+		}
+	}
+	A(int i){
+	}
+	void f(){
+		new Inner(1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test6_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test6_in.java
new file mode 100644
index 0000000..18cbe20
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test6_in.java
@@ -0,0 +1,12 @@
+package p;
+//private, static, final
+class A{
+	A(int i){
+	}
+	void f(){
+		new A(1){
+			void f(){
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test6_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test6_out.java
new file mode 100644
index 0000000..b7c7807
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test6_out.java
@@ -0,0 +1,16 @@
+package p;
+//private, static, final
+class A{
+	private final class Inner extends A {
+		private Inner(int i) {
+			super(i);
+		}
+		void f(){
+		}
+	}
+	A(int i){
+	}
+	void f(){
+		new Inner(1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test7_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test7_in.java
new file mode 100644
index 0000000..81d8b7c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test7_in.java
@@ -0,0 +1,13 @@
+package p;
+//private, static, final
+class A{
+	A(int i){
+	}
+	void f(){
+		new A(1){
+			int X = 0;
+			void f(){
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test7_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test7_out.java
new file mode 100644
index 0000000..e6c4841
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test7_out.java
@@ -0,0 +1,17 @@
+package p;
+//private, static, final
+class A{
+	private final class Inner extends A {
+		int X = 0;
+		private Inner(int i) {
+			super(i);
+		}
+		void f(){
+		}
+	}
+	A(int i){
+	}
+	void f(){
+		new Inner(1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test8_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test8_in.java
new file mode 100644
index 0000000..76a1c72
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test8_in.java
@@ -0,0 +1,14 @@
+package p;
+//private, nonstatic, final
+class A{
+	A(int i){
+	}
+	void f(){
+		new A(1){
+			void f(){
+				x();
+			}
+		};
+	}
+	void x(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test8_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test8_out.java
new file mode 100644
index 0000000..c07a000
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test8_out.java
@@ -0,0 +1,18 @@
+package p;
+//private, nonstatic, final
+class A{
+	private final class Inner extends A {
+		private Inner(int i) {
+			super(i);
+		}
+		void f(){
+			x();
+		}
+	}
+	A(int i){
+	}
+	void f(){
+		new Inner(1);
+	}
+	void x(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test9_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test9_in.java
new file mode 100644
index 0000000..5c55e59
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test9_in.java
@@ -0,0 +1,14 @@
+package p;
+//private, nonstatic, final
+class A{
+	int y;
+	A(int i){
+	}
+	void f(){
+		new A(1){
+			void f(){
+				y= 0;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test9_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test9_out.java
new file mode 100644
index 0000000..fdf593c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_test9_out.java
@@ -0,0 +1,18 @@
+package p;
+//private, nonstatic, final
+class A{
+	private final class Inner extends A {
+		private Inner(int i) {
+			super(i);
+		}
+		void f(){
+			y= 0;
+		}
+	}
+	int y;
+	A(int i){
+	}
+	void f(){
+		new Inner(1);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics0_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics0_in.java
new file mode 100644
index 0000000..f6a598f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics0_in.java
@@ -0,0 +1,7 @@
+package p;
+//private, static, final
+class A<T>{
+	void f(){
+		new A<T>(){};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics0_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics0_out.java
new file mode 100644
index 0000000..e543233
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics0_out.java
@@ -0,0 +1,10 @@
+package p;
+//private, static, final
+class A<T>{
+	private final class Inner extends A<T> {
+	}
+
+	void f(){
+		new Inner();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics1_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics1_in.java
new file mode 100644
index 0000000..529b3fc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics1_in.java
@@ -0,0 +1,7 @@
+package p;
+//public, static, final
+class A<T>{
+	void f(){
+		new A<T>(){};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics1_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics1_out.java
new file mode 100644
index 0000000..21583fc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics1_out.java
@@ -0,0 +1,10 @@
+package p;
+//public, static, final
+class A<T>{
+	public final class Inner extends A<T> {
+	}
+
+	void f(){
+		new Inner();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics2_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics2_in.java
new file mode 100644
index 0000000..caa6d2c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics2_in.java
@@ -0,0 +1,7 @@
+package p;
+//public, nonstatic, final
+class A<T>{
+	void f(){
+		new A<T>(){};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics2_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics2_out.java
new file mode 100644
index 0000000..16e283f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics2_out.java
@@ -0,0 +1,10 @@
+package p;
+//public, nonstatic, final
+class A<T>{
+	public final class Inner extends A<T> {
+	}
+
+	void f(){
+		new Inner();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics3_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics3_in.java
new file mode 100644
index 0000000..d281d9f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics3_in.java
@@ -0,0 +1,7 @@
+package p;
+//public, nonstatic, nonfinal
+class A<T>{
+	void f(){
+		new A<T>(){};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics3_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics3_out.java
new file mode 100644
index 0000000..d99e1f4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics3_out.java
@@ -0,0 +1,10 @@
+package p;
+//public, nonstatic, nonfinal
+class A<T>{
+	public class Inner extends A<T> {
+	}
+
+	void f(){
+		new Inner();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics4_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics4_in.java
new file mode 100644
index 0000000..a533952
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics4_in.java
@@ -0,0 +1,9 @@
+package p;
+//private, static, final
+class A<T>{
+	A(){
+	}
+	void f(){
+		new A<T>(){};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics4_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics4_out.java
new file mode 100644
index 0000000..c334627
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics4_out.java
@@ -0,0 +1,11 @@
+package p;
+//private, static, final
+class A<T>{
+	private final class Inner extends A<T> {
+	}
+	A(){
+	}
+	void f(){
+		new Inner();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics5_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics5_in.java
new file mode 100644
index 0000000..3672a99
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics5_in.java
@@ -0,0 +1,9 @@
+package p;
+//private, static, final
+class A<T>{
+	A(){
+	}
+	static <S> void f(){
+		new A<S>(){};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics5_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics5_out.java
new file mode 100644
index 0000000..9dcf6cb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics5_out.java
@@ -0,0 +1,11 @@
+package p;
+//private, static, final
+class A<T>{
+	private static final class Inner<S> extends A<S> {
+	}
+	A(){
+	}
+	static <S> void f(){
+		new Inner<S>();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics6_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics6_in.java
new file mode 100644
index 0000000..afab998
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics6_in.java
@@ -0,0 +1,11 @@
+package p;
+//private, static, final
+class A<T>{
+	A(){
+	}
+	<S> void f(){
+		new A<S>(){
+			T t;
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics6_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics6_out.java
new file mode 100644
index 0000000..43228c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/canConvert/A_testGenerics6_out.java
@@ -0,0 +1,12 @@
+package p;
+//private, static, final
+class A<T>{
+	private static final class Inner<S, T> extends A<S> {
+		T t;
+	}
+	A(){
+	}
+	<S> void f(){
+		new Inner<S, T>();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail0.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail0.java
new file mode 100644
index 0000000..c4f269c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail0.java
@@ -0,0 +1,10 @@
+package p;
+//references a local type
+class A{
+    void f(){
+        class Local{}
+        new A(){
+            Object x= new Local();
+        };
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail1.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail1.java
new file mode 100644
index 0000000..841b262
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail1.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+    class Inner{}
+    void f(){
+        new A(){
+            Object x= new Object();
+        };
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail2.java
new file mode 100644
index 0000000..9fc6c63
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail2.java
@@ -0,0 +1,9 @@
+package p;
+class Inner{
+	class InnerInner{
+	    void f(){
+	        new Object(){
+	        };
+	    }
+	}    
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail3.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail3.java
new file mode 100644
index 0000000..d651b37
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail3.java
@@ -0,0 +1,16 @@
+package p;
+class A {
+	//duplicate
+}
+public class A {
+	public static class B extends A {
+		public void foo(){
+		}
+	}
+	
+	static B b = new B() {
+		public void foo() {
+			B b = new B(){};
+		}
+	};
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail4.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail4.java
new file mode 100644
index 0000000..4746799
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ConvertAnonymousToNested/cannotConvert/A_testFail4.java
@@ -0,0 +1,20 @@
+package p;
+class A {
+	static void foo() {
+		final int x= 10; 
+		Runnable runnable= new Runnable() {
+			private int field;
+			public void run() {
+				I i= new I() {
+					public void method() {
+						field= x;
+					}
+				};
+			}
+		};
+	}
+}
+
+interface I {
+	void method();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_declared_in_multi_yes_type/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_declared_in_multi_yes_type/in/A.java
new file mode 100644
index 0000000..a641675
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_declared_in_multi_yes_type/in/A.java
@@ -0,0 +1,7 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int[] bar[], baz;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_declared_in_multi_yes_type/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_declared_in_multi_yes_type/out/A.java
new file mode 100644
index 0000000..0ae86ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_declared_in_multi_yes_type/out/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int[] bar[], baz;
+	int[] bar[];
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field/in/A.java
new file mode 100644
index 0000000..7c8fc80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field/in/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int bar;
+	int baz;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field/out/A.java
new file mode 100644
index 0000000..9b0472f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field/out/A.java
@@ -0,0 +1,9 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int bar;
+	int baz;
+	int bar;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field_back/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field_back/in/A.java
new file mode 100644
index 0000000..d89fdf2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field_back/in/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int baz;
+	int bar;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field_back/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field_back/out/A.java
new file mode 100644
index 0000000..9ea3994
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_field_yes_field_back/out/A.java
@@ -0,0 +1,9 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int bar;
+	int baz;
+	int bar;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type/in/A.java
new file mode 100644
index 0000000..127f912
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type/in/A.java
@@ -0,0 +1,7 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int[] bar[]= null, baz= null;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type/out/A.java
new file mode 100644
index 0000000..a4c844b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type/out/A.java
@@ -0,0 +1,9 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int[] bar[]= null, baz= null;
+	int[] bar[] = null;
+	int[] baz = null;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type_1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type_1/in/A.java
new file mode 100644
index 0000000..79ac2a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type_1/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A {
+	private int var11, var2, var3;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type_1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type_1/out/A.java
new file mode 100644
index 0000000..8fe2349
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_fields_declared_in_multi_yes_type_1/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	private int var11, var2, var3;
+	private int var11;
+	private int var2;
+	private int var3;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/in/A.java
new file mode 100644
index 0000000..5fd23e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/in/A.java
@@ -0,0 +1,5 @@
+package p;
+import java.util.*;
+import java.lang.Object;
+class A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/in/C.java
new file mode 100644
index 0000000..9c6b788
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/in/C.java
@@ -0,0 +1,5 @@
+package p;
+class C {
+	void foo() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/out/A.java
new file mode 100644
index 0000000..5fd23e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/out/A.java
@@ -0,0 +1,5 @@
+package p;
+import java.util.*;
+import java.lang.Object;
+class A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/out/C.java
new file mode 100644
index 0000000..0a21d09
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_cu/out/C.java
@@ -0,0 +1,8 @@
+package p;
+
+import java.util.*;
+import java.lang.Object;
+class C {
+	void foo() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/in/A.java
new file mode 100644
index 0000000..5fd23e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/in/A.java
@@ -0,0 +1,5 @@
+package p;
+import java.util.*;
+import java.lang.Object;
+class A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/in/C.java
new file mode 100644
index 0000000..9c6b788
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/in/C.java
@@ -0,0 +1,5 @@
+package p;
+class C {
+	void foo() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/out/A.java
new file mode 100644
index 0000000..5fd23e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/out/A.java
@@ -0,0 +1,5 @@
+package p;
+import java.util.*;
+import java.lang.Object;
+class A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/out/C.java
new file mode 100644
index 0000000..0a21d09
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_method_in_different_cu/out/C.java
@@ -0,0 +1,8 @@
+package p;
+
+import java.util.*;
+import java.lang.Object;
+class C {
+	void foo() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/in/A.java
new file mode 100644
index 0000000..7d966e7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/in/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/in/C.java
new file mode 100644
index 0000000..49f041f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/in/C.java
@@ -0,0 +1,5 @@
+package p;
+class C {
+}
+class D {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/out/A.java
new file mode 100644
index 0000000..7d966e7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/out/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/out/C.java
new file mode 100644
index 0000000..5df7e22
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_import_container_yes_type_in_different_cu/out/C.java
@@ -0,0 +1,7 @@
+package p;
+
+import java.util.*;
+class C {
+}
+class D {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method/in/A.java
new file mode 100644
index 0000000..63216a9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method/in/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	static {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method/out/A.java
new file mode 100644
index 0000000..f419de0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method/out/A.java
@@ -0,0 +1,10 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	static {
+	}
+	static {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method_back/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method_back/in/A.java
new file mode 100644
index 0000000..deb4b8e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method_back/in/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	static {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method_back/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method_back/out/A.java
new file mode 100644
index 0000000..d5fc315
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_method_back/out/A.java
@@ -0,0 +1,10 @@
+package p;
+import java.util.*;
+class A {
+	static {
+	}
+	void foo() {
+	}
+	static {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_type/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_type/in/A.java
new file mode 100644
index 0000000..8c67b83
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_type/in/A.java
@@ -0,0 +1,9 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	{
+		int fred= 0; //comment
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_type/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_type/out/A.java
new file mode 100644
index 0000000..272c775
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_initializer_yes_type/out/A.java
@@ -0,0 +1,12 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	{
+		int fred= 0; //comment
+	}
+	{
+		int fred= 0; //comment
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/in/A.java
new file mode 100644
index 0000000..f32cf61
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/in/A.java
@@ -0,0 +1,10 @@
+package p;
+import java.util.*;
+class A {
+	class Inner {
+		void foo() {//comment here
+		}
+		int bar;//comment there
+		int baz;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/in/C.java
new file mode 100644
index 0000000..8b3f1f0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/in/C.java
@@ -0,0 +1,3 @@
+package p;
+class C{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/out/A.java
new file mode 100644
index 0000000..f32cf61
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/out/A.java
@@ -0,0 +1,10 @@
+package p;
+import java.util.*;
+class A {
+	class Inner {
+		void foo() {//comment here
+		}
+		int bar;//comment there
+		int baz;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/out/C.java
new file mode 100644
index 0000000..a10a14d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_inner_type_yes_cu/out/C.java
@@ -0,0 +1,10 @@
+package p;
+class C{
+}
+
+class Inner {
+	void foo() {//comment here
+	}
+	int bar;//comment there
+	int baz;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/in/A.java
new file mode 100644
index 0000000..97fa672
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/in/A.java
@@ -0,0 +1,6 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/in/C.java
new file mode 100644
index 0000000..49f041f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/in/C.java
@@ -0,0 +1,5 @@
+package p;
+class C {
+}
+class D {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/out/A.java
new file mode 100644
index 0000000..97fa672
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/out/A.java
@@ -0,0 +1,6 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/out/C.java
new file mode 100644
index 0000000..cc9219f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_cu_with_main_type/out/C.java
@@ -0,0 +1,8 @@
+package p;
+class C {
+
+	void foo() {
+	}
+}
+class D {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field/in/A.java
new file mode 100644
index 0000000..949b72d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field/in/A.java
@@ -0,0 +1,7 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int bar;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field/out/A.java
new file mode 100644
index 0000000..046d474
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field/out/A.java
@@ -0,0 +1,9 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int bar;
+	void foo() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field_back/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field_back/in/A.java
new file mode 100644
index 0000000..c7f35ff
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field_back/in/A.java
@@ -0,0 +1,7 @@
+package p;
+import java.util.*;
+class A {
+	int bar;
+	void foo() {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field_back/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field_back/out/A.java
new file mode 100644
index 0000000..43c154e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_field_back/out/A.java
@@ -0,0 +1,9 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int bar;
+	void foo() {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer/in/A.java
new file mode 100644
index 0000000..7d966e7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer/in/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer/out/A.java
new file mode 100644
index 0000000..3437196
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer/out/A.java
@@ -0,0 +1,10 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	{
+	}
+	void foo() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer_back/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer_back/in/A.java
new file mode 100644
index 0000000..cfdbc56
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer_back/in/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	{
+	}
+	void foo() {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer_back/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer_back/out/A.java
new file mode 100644
index 0000000..26ab790
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_initializer_back/out/A.java
@@ -0,0 +1,10 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	{
+	}
+	void foo() {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_itself/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_itself/in/A.java
new file mode 100644
index 0000000..97fa672
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_itself/in/A.java
@@ -0,0 +1,6 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_itself/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_itself/out/A.java
new file mode 100644
index 0000000..050fef9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_itself/out/A.java
@@ -0,0 +1,9 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+
+	void foo() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method/in/A.java
new file mode 100644
index 0000000..3df1c60
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method/in/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	void bar() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method/out/A.java
new file mode 100644
index 0000000..d662690
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method/out/A.java
@@ -0,0 +1,10 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	void bar() {
+	}
+	void foo() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method_back/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method_back/in/A.java
new file mode 100644
index 0000000..21bdf9e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method_back/in/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void bar() {
+	}
+	void foo() {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method_back/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method_back/out/A.java
new file mode 100644
index 0000000..62df3cd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_other_method_back/out/A.java
@@ -0,0 +1,10 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	void bar() {
+	}
+	void foo() {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_type/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_type/in/A.java
new file mode 100644
index 0000000..be7483e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_type/in/A.java
@@ -0,0 +1,9 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+		int stuff= 1; //this is a comment
+					  //and another one
+	}
+	int bar;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_type/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_type/out/A.java
new file mode 100644
index 0000000..8015905
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_method_yes_type/out/A.java
@@ -0,0 +1,13 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+		int stuff= 1; //this is a comment
+					  //and another one
+	}
+	void foo() {
+		int stuff= 1; //this is a comment
+					  //and another one
+	}
+	int bar;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/in/A.java
new file mode 100644
index 0000000..7c8fc80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/in/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int bar;
+	int baz;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/in/C.java
new file mode 100644
index 0000000..8b3f1f0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/in/C.java
@@ -0,0 +1,3 @@
+package p;
+class C{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/out/A.java
new file mode 100644
index 0000000..7c8fc80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/out/A.java
@@ -0,0 +1,8 @@
+package p;
+import java.util.*;
+class A {
+	void foo() {
+	}
+	int bar;
+	int baz;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/out/C.java
new file mode 100644
index 0000000..3609e4e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Copy/test_type_yes_type/out/C.java
@@ -0,0 +1,10 @@
+package p;
+class C{
+}
+
+class A {
+	void foo() {
+	}
+	int bar;
+	int baz;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/CopyPackageChange/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/CopyPackageChange/A.java
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/CopyPackageChange/A.java
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf01/in/A.java
new file mode 100644
index 0000000..57c50a6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf01/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+public class A {
+
+	static String foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf01/out/A.java
new file mode 100644
index 0000000..e1f013e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf01/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+public class A {
+
+	static String foo;
+	/**
+	 * @deprecated Use {@link #foo} instead
+	 */
+	static String foo = foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf02/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf02/in/A.java
new file mode 100644
index 0000000..9194a64
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf02/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+public class A {
+
+	/**
+	 * This is the field "foo".
+	 */
+	static String foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf02/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf02/out/A.java
new file mode 100644
index 0000000..a6df0f9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf02/out/A.java
@@ -0,0 +1,14 @@
+package p;
+
+public class A {
+
+	/**
+	 * This is the field "foo".
+	 */
+	static String foo;
+	/**
+	 * This is the field "foo".
+	 * @deprecated Use {@link #foo} instead
+	 */
+	static String foo = foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf03/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf03/in/A.java
new file mode 100644
index 0000000..dde6f35
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf03/in/A.java
@@ -0,0 +1,8 @@
+package p;
+
+public class A {
+
+	@Anno1
+	@Anno2
+	static String foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf03/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf03/out/A.java
new file mode 100644
index 0000000..aedcb8b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf03/out/A.java
@@ -0,0 +1,14 @@
+package p;
+
+public class A {
+
+	@Anno1
+	@Anno2
+	static String foo;
+	/**
+	 * @deprecated Use {@link #foo} instead
+	 */
+	@Anno1
+	@Anno2
+	static String foo = foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf04/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf04/in/A.java
new file mode 100644
index 0000000..57c50a6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf04/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+public class A {
+
+	static String foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf04/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf04/out/A.java
new file mode 100644
index 0000000..8650ed2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf04/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+public class A {
+
+	static String foo;
+	/**
+	 * @deprecated Use {@link #bar} instead
+	 */
+	static String foo = bar;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf05/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf05/in/A.java
new file mode 100644
index 0000000..57c50a6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf05/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+public class A {
+
+	static String foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf05/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf05/in/B.java
new file mode 100644
index 0000000..7bb93c4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf05/in/B.java
@@ -0,0 +1,5 @@
+package p;
+
+public class B {
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf05/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf05/out/A.java
new file mode 100644
index 0000000..f173979
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf05/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+public class A {
+
+	static String foo;
+	/**
+	 * @deprecated Use {@link B#foo} instead
+	 */
+	static String foo = B.foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf06/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf06/in/A.java
new file mode 100644
index 0000000..57c50a6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf06/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+public class A {
+
+	static String foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf06/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf06/in/B.java
new file mode 100644
index 0000000..7bb93c4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf06/in/B.java
@@ -0,0 +1,5 @@
+package p;
+
+public class B {
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf06/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf06/out/A.java
new file mode 100644
index 0000000..49d9bdb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf06/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+public class A {
+
+	static String foo;
+	/**
+	 * @deprecated Use {@link B#bar} instead
+	 */
+	static String foo = B.bar;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf07/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf07/in/A.java
new file mode 100644
index 0000000..14c7d35
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf07/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+public class A {
+
+	static/*comment*/String/*comment2*/ foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf07/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf07/out/A.java
new file mode 100644
index 0000000..a498b95
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf07/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+public class A {
+
+	static/*comment*/String/*comment2*/ foo;
+	/**
+	 * @deprecated Use {@link #foo} instead
+	 */
+	static/*comment*/String/*comment2*/ foo = foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf08/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf08/in/A.java
new file mode 100644
index 0000000..57c50a6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf08/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+public class A {
+
+	static String foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf08/in/E.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf08/in/E.java
new file mode 100644
index 0000000..d2bb83e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf08/in/E.java
@@ -0,0 +1,5 @@
+package e;
+
+public class E {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf08/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf08/out/A.java
new file mode 100644
index 0000000..56acbe5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf08/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+import e.E;
+
+public class A {
+
+	static String foo;
+	/**
+	 * @deprecated Use {@link E#foo} instead
+	 */
+	static String foo = E.foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf09/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf09/in/A.java
new file mode 100644
index 0000000..3554bb2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf09/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+public class A {
+
+	static String foo = "Tell me something";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf09/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf09/out/A.java
new file mode 100644
index 0000000..1e345d0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testf09/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+public class A {
+
+	static String foo = "Tell me something";
+	/**
+	 * @deprecated Use {@link #foo} instead
+	 */
+	static String foo = foo;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm01/in/A.java
new file mode 100644
index 0000000..a70dfd6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm01/in/A.java
@@ -0,0 +1,8 @@
+package p;
+
+public class A {
+
+	void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm01/out/A.java
new file mode 100644
index 0000000..8871a90
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm01/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+public class A {
+
+	/**
+	 * @deprecated Use {@link #foo()} instead
+	 */
+	void foo() {
+		foo();
+	}
+
+	void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm02/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm02/in/A.java
new file mode 100644
index 0000000..e48a703
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm02/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+public class A {
+
+	/**
+	 * This is the method foo.
+	 *
+	 */
+	void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm02/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm02/out/A.java
new file mode 100644
index 0000000..a027cbf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm02/out/A.java
@@ -0,0 +1,21 @@
+package p;
+
+public class A {
+
+	/**
+	 * This is the method foo.
+	 * @deprecated Use {@link #foo()} instead
+	 *
+	 */
+	void foo() {
+		foo();
+	}
+
+	/**
+	 * This is the method foo.
+	 *
+	 */
+	void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm03/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm03/in/A.java
new file mode 100644
index 0000000..b89a271
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm03/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+public class A {
+
+	@Some
+	@Thing
+	@Else
+	void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm03/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm03/out/A.java
new file mode 100644
index 0000000..d0d7518
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm03/out/A.java
@@ -0,0 +1,21 @@
+package p;
+
+public class A {
+
+	/**
+	 * @deprecated Use {@link #foo()} instead
+	 */
+	@Some
+	@Thing
+	@Else
+	void foo() {
+		foo();
+	}
+
+	@Some
+	@Thing
+	@Else
+	void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm04/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm04/in/A.java
new file mode 100644
index 0000000..a70dfd6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm04/in/A.java
@@ -0,0 +1,8 @@
+package p;
+
+public class A {
+
+	void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm04/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm04/out/A.java
new file mode 100644
index 0000000..798f946
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm04/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+public class A {
+
+	/**
+	 * @deprecated Use {@link #bar()} instead
+	 */
+	void foo() {
+		bar();
+	}
+
+	void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm05/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm05/in/A.java
new file mode 100644
index 0000000..36a84c5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm05/in/A.java
@@ -0,0 +1,8 @@
+package p;
+
+public class A {
+
+	static void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm05/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm05/in/B.java
new file mode 100644
index 0000000..7bb93c4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm05/in/B.java
@@ -0,0 +1,5 @@
+package p;
+
+public class B {
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm05/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm05/out/A.java
new file mode 100644
index 0000000..252d611
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm05/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+public class A {
+
+	/**
+	 * @deprecated Use {@link B#foo()} instead
+	 */
+	static void foo() {
+		B.foo();
+	}
+
+	static void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm06/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm06/in/A.java
new file mode 100644
index 0000000..36a84c5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm06/in/A.java
@@ -0,0 +1,8 @@
+package p;
+
+public class A {
+
+	static void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm06/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm06/in/B.java
new file mode 100644
index 0000000..7bb93c4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm06/in/B.java
@@ -0,0 +1,5 @@
+package p;
+
+public class B {
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm06/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm06/out/A.java
new file mode 100644
index 0000000..4521047
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm06/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+public class A {
+
+	/**
+	 * @deprecated Use {@link B#bar()} instead
+	 */
+	static void foo() {
+		B.bar();
+	}
+
+	static void foo() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm07/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm07/in/A.java
new file mode 100644
index 0000000..fed90f0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm07/in/A.java
@@ -0,0 +1,8 @@
+package p;
+
+public class A {
+
+	static void /*abstract*/ foo(String/*aaa*/a,/*x*/String/*bar*/ b/*foo*/) /*foo*/{
+
+	}//bar
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm07/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm07/out/A.java
new file mode 100644
index 0000000..4594107
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm07/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+public class A {
+
+	/**
+	 * @deprecated Use {@link #bar(String,String)} instead
+	 */
+	static void /*abstract*/ foo(String/*aaa*/a,/*x*/String/*bar*/ b/*foo*/) /*foo*/{
+		bar(a, b);
+	}//bar
+
+	static void /*abstract*/ foo(String/*aaa*/a,/*x*/String/*bar*/ b/*foo*/) /*foo*/{
+
+	}//bar
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm08/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm08/in/A.java
new file mode 100644
index 0000000..74ca11c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm08/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+public class A {
+
+	static void foo() { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm08/in/E.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm08/in/E.java
new file mode 100644
index 0000000..1bc16c8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm08/in/E.java
@@ -0,0 +1,5 @@
+package e;
+
+public class E {
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm08/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm08/out/A.java
new file mode 100644
index 0000000..a81139b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm08/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+import e.E;
+
+public class A {
+
+	/**
+	 * @deprecated Use {@link E#foo()} instead
+	 */
+	static void foo() {
+		E.foo();
+	}
+
+	static void foo() { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm09/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm09/in/A.java
new file mode 100644
index 0000000..fc9318c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm09/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+public abstract class A {
+
+	abstract void foo();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm09/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm09/out/A.java
new file mode 100644
index 0000000..2c972cc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm09/out/A.java
@@ -0,0 +1,11 @@
+package p;
+
+public abstract class A {
+
+	/**
+	 * @deprecated Use {@link #foo()} instead
+	 */
+	abstract void foo();
+
+	abstract void foo();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm10/in/A.java
new file mode 100644
index 0000000..8f63c94
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm10/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+public interface A {
+
+	void foo();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm10/out/A.java
new file mode 100644
index 0000000..93d757e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm10/out/A.java
@@ -0,0 +1,11 @@
+package p;
+
+public interface A {
+
+	/**
+	 * @deprecated Use {@link #foo()} instead
+	 */
+	void foo();
+
+	void foo();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm11/in/A.java
new file mode 100644
index 0000000..ca33604
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm11/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+public class A {
+
+	A() { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm11/out/A.java
new file mode 100644
index 0000000..a8ff621
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/DelegateCreator/testm11/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+public class A {
+
+	/**
+	 * @deprecated Use {@link #A()} instead
+	 */
+	A() {
+		this();
+	}
+
+	A() { }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu0/in/A.java
new file mode 100644
index 0000000..5fa7bcf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu0/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	int i, j;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu0/out/A.java
new file mode 100644
index 0000000..bbeefab
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu0/out/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	int j;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu1/in/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu1/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/Delete/testDeleteWithinCu1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu1/out/A.java
new file mode 100644
index 0000000..ff4381d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu1/out/A.java
@@ -0,0 +1 @@
+package p;
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu10/in/A.java
new file mode 100644
index 0000000..3ec9951
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu10/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	static {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu10/out/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu10/out/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/Delete/testDeleteWithinCu11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu11/in/A.java
new file mode 100644
index 0000000..e411cc5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu11/in/A.java
@@ -0,0 +1,4 @@
+package p;
+import java.util.List;
+class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu11/out/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu11/out/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/Delete/testDeleteWithinCu12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu12/in/A.java
new file mode 100644
index 0000000..490e407
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu12/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	class B{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu12/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu12/out/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu12/out/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/Delete/testDeleteWithinCu13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu13/in/A.java
new file mode 100644
index 0000000..490e407
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu13/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	class B{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu13/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu13/out/A.java
new file mode 100644
index 0000000..ff4381d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu13/out/A.java
@@ -0,0 +1 @@
+package p;
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu14/in/A.java
new file mode 100644
index 0000000..490e407
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu14/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	class B{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu14/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu14/out/A.java
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu14/out/A.java
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu15/in/A.java
new file mode 100644
index 0000000..815e6f3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu15/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	int field;
+	public int getField(){
+		return field;
+	}
+
+	public void setField(int field){
+		this.field= field;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu15/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu15/out/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu15/out/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/Delete/testDeleteWithinCu16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu16/in/A.java
new file mode 100644
index 0000000..4b4ee0d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu16/in/A.java
@@ -0,0 +1,8 @@
+package p;
+/**
+ */
+class Test{
+}/**
+ */
+class Test1{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu16/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu16/out/A.java
new file mode 100644
index 0000000..f6c2f03
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu16/out/A.java
@@ -0,0 +1,5 @@
+package p;
+/**
+ */
+class Test1{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu17/in/A.java
new file mode 100644
index 0000000..bb37e19
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu17/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+
+	void f(){}
+	
+	/**
+	 * 
+	 */
+	void fs(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu17/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu17/out/A.java
new file mode 100644
index 0000000..48f86a9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu17/out/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+
+	/**
+	 * 
+	 */
+	void fs(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu18/in/A.java
new file mode 100644
index 0000000..7d18eda
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu18/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A {
+	/**
+	 */
+	void fs(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu18/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu18/out/A.java
new file mode 100644
index 0000000..688a6d9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu18/out/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/Delete/testDeleteWithinCu19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu19/in/A.java
new file mode 100644
index 0000000..029feb2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu19/in/A.java
@@ -0,0 +1,5 @@
+package p;
+import java.util.List;
+import java.util.Set;
+class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu19/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu19/out/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu19/out/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/Delete/testDeleteWithinCu2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu2/in/A.java
new file mode 100644
index 0000000..40ae578
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu2/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	int i;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu2/out/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu2/out/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/Delete/testDeleteWithinCu20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu20/in/A.java
new file mode 100644
index 0000000..0c54a34
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu20/in/A.java
@@ -0,0 +1,8 @@
+package p;
+
+class A 
+	protected String fEmpty;
+
+	public static void main (String[] args) {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu20/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu20/out/A.java
new file mode 100644
index 0000000..b7ed234
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu20/out/A.java
@@ -0,0 +1,6 @@
+package p;
+
+class A 
+	public static void main (String[] args) {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu21/in/A.java
new file mode 100644
index 0000000..9d80a97
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu21/in/A.java
@@ -0,0 +1,5 @@
+package p;
+
+class A 
+	private int var11, var2, var3;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu21/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu21/out/A.java
new file mode 100644
index 0000000..cb4cb95
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu21/out/A.java
@@ -0,0 +1,5 @@
+package p;
+
+class A 
+	private int var2, var3;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu22/in/A.java
new file mode 100644
index 0000000..d1826a3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu22/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+}
+class B{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu22/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu22/out/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu22/out/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/Delete/testDeleteWithinCu23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu23/in/A.java
new file mode 100644
index 0000000..069dfcd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu23/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	private int nestingDepth;
+	private boolean openOnRun = true;
+	public boolean getOpenOnRun() {
+		return openOnRun;
+	}
+	protected int getNestingDepth() {
+		return nestingDepth;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu23/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu23/out/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu23/out/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/Delete/testDeleteWithinCu24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu24/in/A.java
new file mode 100644
index 0000000..3cac558
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu24/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	public boolean getOpenOnRun() {
+		new Thread() {
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu24/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu24/out/A.java
new file mode 100644
index 0000000..b11f89e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu24/out/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	public boolean getOpenOnRun() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu25/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu25/in/A.java
new file mode 100644
index 0000000..972ea73
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu25/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	public boolean getOpenOnRun() {
+		Object th= new Thread() {
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu25/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu25/out/A.java
new file mode 100644
index 0000000..ec63380
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu25/out/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	public boolean getOpenOnRun() {
+		Object th;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu26/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu26/in/A.java
new file mode 100644
index 0000000..1f27282
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu26/in/A.java
@@ -0,0 +1,4 @@
+package p;
+enum A{
+	X, Y { };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu26/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu26/out/A.java
new file mode 100644
index 0000000..98ee52c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu26/out/A.java
@@ -0,0 +1,4 @@
+package p;
+enum A{
+	X, Y;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu3/in/A.java
new file mode 100644
index 0000000..5fa7bcf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu3/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	int i, j;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu3/out/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu3/out/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/Delete/testDeleteWithinCu4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu4/in/A.java
new file mode 100644
index 0000000..be1c2f8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu4/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	int i, j, k;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu4/out/A.java
new file mode 100644
index 0000000..bbeefab
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu4/out/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	int j;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu5/in/A.java
new file mode 100644
index 0000000..5fa7bcf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu5/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	int i, j;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu5/out/A.java
new file mode 100644
index 0000000..40ae578
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu5/out/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	int i;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu6/in/A.java
new file mode 100644
index 0000000..618deb7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu6/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	int i= 0, j= 1;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu6/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu6/out/A.java
new file mode 100644
index 0000000..727dfc4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu6/out/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	int i= 0;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu7/in/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu7/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/Delete/testDeleteWithinCu7/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu7/out/A.java
new file mode 100644
index 0000000..197a31b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu7/out/A.java
@@ -0,0 +1,3 @@
+
+class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu8/in/A.java
new file mode 100644
index 0000000..ed947f2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu8/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A{
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu8/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu8/out/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu8/out/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/Delete/testDeleteWithinCu9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu9/in/A.java
new file mode 100644
index 0000000..c08e03d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu9/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu9/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu9/out/A.java
new file mode 100644
index 0000000..6291b80
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Delete/testDeleteWithinCu9/out/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/ExtractClass/testArrayInitializer/in/ArrayInitializer.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayInitializer/in/ArrayInitializer.java
new file mode 100644
index 0000000..9e8b1d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayInitializer/in/ArrayInitializer.java
@@ -0,0 +1,6 @@
+package p;
+
+public class ArrayInitializer {
+	String[] test = { "Test", "Test2" };
+	int[] val = new int[] { 1, 2, 3, 34 };
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayInitializer/out/ArrayInitializer.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayInitializer/out/ArrayInitializer.java
new file mode 100644
index 0000000..5a80728
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayInitializer/out/ArrayInitializer.java
@@ -0,0 +1,5 @@
+package p;
+
+public class ArrayInitializer {
+	ArrayInitializerParameter parameterObject = new ArrayInitializerParameter(new String[]{ "Test", "Test2" }, new int[] { 1, 2, 3, 34 });
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayInitializer/out/ArrayInitializerParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayInitializer/out/ArrayInitializerParameter.java
new file mode 100644
index 0000000..3cebcaf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayInitializer/out/ArrayInitializerParameter.java
@@ -0,0 +1,22 @@
+package p;
+
+public class ArrayInitializerParameter {
+	private String[] test;
+	private int[] val;
+	public ArrayInitializerParameter(String[] test, int[] val) {
+		this.test = test;
+		this.val = val;
+	}
+	public String[] getTest() {
+		return test;
+	}
+	public void setTest(String[] test) {
+		this.test = test;
+	}
+	public int[] getVal() {
+		return val;
+	}
+	public void setVal(int[] val) {
+		this.val = val;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayLengthAccess/in/ArrayLengthAccess.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayLengthAccess/in/ArrayLengthAccess.java
new file mode 100644
index 0000000..9726cff
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayLengthAccess/in/ArrayLengthAccess.java
@@ -0,0 +1,5 @@
+package p;
+
+public class ArrayLengthAccess {
+	private int test=new int[0].length;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayLengthAccess/out/ArrayLengthAccess.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayLengthAccess/out/ArrayLengthAccess.java
new file mode 100644
index 0000000..19759a6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayLengthAccess/out/ArrayLengthAccess.java
@@ -0,0 +1,5 @@
+package p;
+
+public class ArrayLengthAccess {
+	private ArrayLengthAccessParameter parameterObject = new ArrayLengthAccessParameter(new int[0].length);
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayLengthAccess/out/ArrayLengthAccessParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayLengthAccess/out/ArrayLengthAccessParameter.java
new file mode 100644
index 0000000..5a27e39
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testArrayLengthAccess/out/ArrayLengthAccessParameter.java
@@ -0,0 +1,14 @@
+package p;
+
+public class ArrayLengthAccessParameter {
+	private int test;
+	public ArrayLengthAccessParameter(int test) {
+		this.test = test;
+	}
+	public int getTest() {
+		return test;
+	}
+	public void setTest(int test) {
+		this.test = test;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtract/in/ComplexExtract.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtract/in/ComplexExtract.java
new file mode 100644
index 0000000..92b1c26
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtract/in/ComplexExtract.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class ComplexExtract {
+	private int test;
+	protected int test2= 5;
+	private int test3, test4= 5;
+	
+	public void foo(){
+		test3++;
+		test= 5+7;
+		System.out.println(test+" "+test4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtract/out/ComplexExtract.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtract/out/ComplexExtract.java
new file mode 100644
index 0000000..8d69075
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtract/out/ComplexExtract.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class ComplexExtract {
+	protected ComplexExtractParameter parameterObject = new ComplexExtractParameter(5, 5);
+
+	public void foo(){
+		parameterObject.test3++;
+		parameterObject.test= 5+7;
+		System.out.println(parameterObject.test+" "+parameterObject.test4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtract/out/ComplexExtractParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtract/out/ComplexExtractParameter.java
new file mode 100644
index 0000000..9ad2496
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtract/out/ComplexExtractParameter.java
@@ -0,0 +1,12 @@
+package p;
+
+public class ComplexExtractParameter {
+	public int test;
+	public int test2;
+	public int test3;
+	public int test4;
+	public ComplexExtractParameter(int test2, int test4) {
+		this.test2 = test2;
+		this.test4 = test4;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractGetterSetter/in/ComplexExtractGetterSetter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractGetterSetter/in/ComplexExtractGetterSetter.java
new file mode 100644
index 0000000..a8e07de
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractGetterSetter/in/ComplexExtractGetterSetter.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class ComplexExtractGetterSetter {
+	private int test;
+	protected int test2= 5;
+	private int test3, test4= 5;
+	
+	public void foo(){
+		test3++;
+		test= 5+7;
+		System.out.println(test+" "+test4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractGetterSetter/out/ComplexExtractGetterSetter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractGetterSetter/out/ComplexExtractGetterSetter.java
new file mode 100644
index 0000000..7f2db0f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractGetterSetter/out/ComplexExtractGetterSetter.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class ComplexExtractGetterSetter {
+	protected ComplexExtractGetterSetterParameter parameterObject = new ComplexExtractGetterSetterParameter(5, 5);
+
+	public void foo(){
+		parameterObject.setTest3(parameterObject.getTest3() + 1);
+		parameterObject.setTest(5+7);
+		System.out.println(parameterObject.getTest()+" "+parameterObject.getTest4());
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractGetterSetter/out/ComplexExtractGetterSetterParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractGetterSetter/out/ComplexExtractGetterSetterParameter.java
new file mode 100644
index 0000000..b8f681a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractGetterSetter/out/ComplexExtractGetterSetterParameter.java
@@ -0,0 +1,36 @@
+package p;
+
+public class ComplexExtractGetterSetterParameter {
+	private int test;
+	private int test2;
+	private int test3;
+	private int test4;
+	public ComplexExtractGetterSetterParameter(int test2, int test4) {
+		this.test2 = test2;
+		this.test4 = test4;
+	}
+	public int getTest() {
+		return test;
+	}
+	public void setTest(int test) {
+		this.test = test;
+	}
+	public int getTest2() {
+		return test2;
+	}
+	public void setTest2(int test2) {
+		this.test2 = test2;
+	}
+	public int getTest3() {
+		return test3;
+	}
+	public void setTest3(int test3) {
+		this.test3 = test3;
+	}
+	public int getTest4() {
+		return test4;
+	}
+	public void setTest4(int test4) {
+		this.test4 = test4;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractNested/in/ComplexExtractNested.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractNested/in/ComplexExtractNested.java
new file mode 100644
index 0000000..96239b2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractNested/in/ComplexExtractNested.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class ComplexExtractNested {
+	private int test;
+	protected int test2= 5;
+	private int test3, test4= 5;
+	
+	public void foo(){
+		test3++;
+		test= 5+7;
+		System.out.println(test+" "+test4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractNested/out/ComplexExtractNested.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractNested/out/ComplexExtractNested.java
new file mode 100644
index 0000000..f5d2cd1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testComplexExtractNested/out/ComplexExtractNested.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class ComplexExtractNested {
+	public static class ComplexExtractNestedParameter {
+		public int test;
+		public int test2;
+		public int test3;
+		public int test4;
+		public ComplexExtractNestedParameter(int test2, int test4) {
+			this.test2 = test2;
+			this.test4 = test4;
+		}
+	}
+
+	protected ComplexExtractNestedParameter parameterObject = new ComplexExtractNestedParameter(5, 5);
+
+	public void foo(){
+		parameterObject.test3++;
+		parameterObject.test= 5+7;
+		System.out.println(parameterObject.test+" "+parameterObject.test4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testControlBodyUpdates/in/ControlBodyUpdates.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testControlBodyUpdates/in/ControlBodyUpdates.java
new file mode 100644
index 0000000..6643bf0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testControlBodyUpdates/in/ControlBodyUpdates.java
@@ -0,0 +1,42 @@
+package p;
+
+import java.util.ArrayList;
+
+public class ControlBodyUpdates {
+	private ArrayList<Integer> arraylists;
+	Integer[] ints;
+	int fNewStart;
+
+	private void foo() {
+		for (int i = 0; i < arraylists.get(0); i++)
+			arraylists = null;
+		for (int intValue : ints)
+			arraylists = new ArrayList(arraylists.size());
+		while (ints.length != 0)
+			arraylists = null;
+		if (arraylists == null)
+			arraylists = null;
+		int[] newRange= new int[8];
+		for (int i = 0; i < arraylists.get(0); i++) {
+			arraylists = null;
+		}
+		for (int intValue : ints) {
+			arraylists = new ArrayList(arraylists.size());
+		}
+		while (ints.length != 0) {
+			arraylists = null;
+		}
+		if (arraylists == null) {
+			arraylists = null;
+		}
+		if (newRange[0] > 0)
+			fNewStart= newRange[0]-1;	// line number start at 0!
+		else
+			fNewStart= 0;
+		if (newRange[0] > 0) {
+			fNewStart= newRange[0]-1;	// line number start at 0!
+		} else {
+			fNewStart= 0;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testControlBodyUpdates/out/ControlBodyUpdates.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testControlBodyUpdates/out/ControlBodyUpdates.java
new file mode 100644
index 0000000..0a75099
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testControlBodyUpdates/out/ControlBodyUpdates.java
@@ -0,0 +1,40 @@
+package p;
+
+import java.util.ArrayList;
+
+public class ControlBodyUpdates {
+	ControlBodyUpdatesParameter parameterObject = new ControlBodyUpdatesParameter();
+
+	private void foo() {
+		for (int i = 0; i < parameterObject.getArraylists().get(0); i++)
+			parameterObject.setArraylists(null);
+		for (int intValue : parameterObject.getInts())
+			parameterObject.setArraylists(new ArrayList(parameterObject.getArraylists().size()));
+		while (parameterObject.getInts().length != 0)
+			parameterObject.setArraylists(null);
+		if (parameterObject.getArraylists() == null)
+			parameterObject.setArraylists(null);
+		int[] newRange= new int[8];
+		for (int i = 0; i < parameterObject.getArraylists().get(0); i++) {
+			parameterObject.setArraylists(null);
+		}
+		for (int intValue : parameterObject.getInts()) {
+			parameterObject.setArraylists(new ArrayList(parameterObject.getArraylists().size()));
+		}
+		while (parameterObject.getInts().length != 0) {
+			parameterObject.setArraylists(null);
+		}
+		if (parameterObject.getArraylists() == null) {
+			parameterObject.setArraylists(null);
+		}
+		if (newRange[0] > 0)
+			parameterObject.setNewStart(newRange[0]-1);	// line number start at 0!
+		else
+			parameterObject.setNewStart(0);
+		if (newRange[0] > 0) {
+			parameterObject.setNewStart(newRange[0]-1);	// line number start at 0!
+		} else {
+			parameterObject.setNewStart(0);
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testControlBodyUpdates/out/ControlBodyUpdatesParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testControlBodyUpdates/out/ControlBodyUpdatesParameter.java
new file mode 100644
index 0000000..764760d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testControlBodyUpdates/out/ControlBodyUpdatesParameter.java
@@ -0,0 +1,29 @@
+package p;
+
+import java.util.ArrayList;
+
+public class ControlBodyUpdatesParameter {
+	private ArrayList<Integer> arraylists;
+	private Integer[] ints;
+	private int fNewStart;
+	public ControlBodyUpdatesParameter() {
+	}
+	public ArrayList<Integer> getArraylists() {
+		return arraylists;
+	}
+	public void setArraylists(ArrayList<Integer> arraylists) {
+		this.arraylists = arraylists;
+	}
+	public Integer[] getInts() {
+		return ints;
+	}
+	public void setInts(Integer[] ints) {
+		this.ints = ints;
+	}
+	public int getNewStart() {
+		return fNewStart;
+	}
+	public void setNewStart(int newStart) {
+		fNewStart = newStart;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testCopyModifierAnnotations/in/CopyModifierAnnotations.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testCopyModifierAnnotations/in/CopyModifierAnnotations.java
new file mode 100644
index 0000000..e00d313
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testCopyModifierAnnotations/in/CopyModifierAnnotations.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class CopyModifierAnnotations {
+	@Deprecated
+	public final int test=7;
+	private transient String test2;
+	private volatile Integer test4;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testCopyModifierAnnotations/out/CopyModifierAnnotations.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testCopyModifierAnnotations/out/CopyModifierAnnotations.java
new file mode 100644
index 0000000..880b324
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testCopyModifierAnnotations/out/CopyModifierAnnotations.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class CopyModifierAnnotations {
+	public CopyModifierAnnotationsParameter parameterObject = new CopyModifierAnnotationsParameter(7);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testCopyModifierAnnotations/out/CopyModifierAnnotationsParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testCopyModifierAnnotations/out/CopyModifierAnnotationsParameter.java
new file mode 100644
index 0000000..9cf14cd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testCopyModifierAnnotations/out/CopyModifierAnnotationsParameter.java
@@ -0,0 +1,11 @@
+package p;
+
+public class CopyModifierAnnotationsParameter {
+	@Deprecated
+	public final int test;
+	public String test2;
+	public Integer test4;
+	public CopyModifierAnnotationsParameter(int test) {
+		this.test = test;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testDuplicateParamName/in/DuplicateParamName.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testDuplicateParamName/in/DuplicateParamName.java
new file mode 100644
index 0000000..8cafe77
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testDuplicateParamName/in/DuplicateParamName.java
@@ -0,0 +1,9 @@
+package p;
+
+public class DuplicateParamName {
+	private String fHTest= foo();
+	private String fGTest= foo();
+	private String foo() {
+		return "Foo";
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testDuplicateParamName/out/DuplicateParamName.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testDuplicateParamName/out/DuplicateParamName.java
new file mode 100644
index 0000000..863e3c3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testDuplicateParamName/out/DuplicateParamName.java
@@ -0,0 +1,8 @@
+package p;
+
+public class DuplicateParamName {
+	private DuplicateParamNameParameter parameterObject = new DuplicateParamNameParameter(foo(), foo());
+	private String foo() {
+		return "Foo";
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testDuplicateParamName/out/DuplicateParamNameParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testDuplicateParamName/out/DuplicateParamNameParameter.java
new file mode 100644
index 0000000..526abc9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testDuplicateParamName/out/DuplicateParamNameParameter.java
@@ -0,0 +1,22 @@
+package p;
+
+public class DuplicateParamNameParameter {
+	private String fHTest;
+	private String fGTest;
+	public DuplicateParamNameParameter(String hTest, String gTest) {
+		fHTest = hTest;
+		fGTest = gTest;
+	}
+	public String getHTest() {
+		return fHTest;
+	}
+	public void setHTest(String hTest) {
+		fHTest = hTest;
+	}
+	public String getGTest() {
+		return fGTest;
+	}
+	public void setGTest(String gTest) {
+		fGTest = gTest;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testFieldsWithJavadoc/in/FieldsWithJavadoc.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testFieldsWithJavadoc/in/FieldsWithJavadoc.java
new file mode 100644
index 0000000..7bdc512
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testFieldsWithJavadoc/in/FieldsWithJavadoc.java
@@ -0,0 +1,12 @@
+package p;
+
+public class FieldsWithJavadoc {
+	
+	/**
+	 * the test field
+	 */
+	String[] test;
+	
+	/** val field */
+	int[] val;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testFieldsWithJavadoc/out/FieldsWithJavadoc.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testFieldsWithJavadoc/out/FieldsWithJavadoc.java
new file mode 100644
index 0000000..65ae846
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testFieldsWithJavadoc/out/FieldsWithJavadoc.java
@@ -0,0 +1,6 @@
+package p;
+
+public class FieldsWithJavadoc {
+	
+	FieldsWithJavadocData data = new FieldsWithJavadocData();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testFieldsWithJavadoc/out/FieldsWithJavadocData.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testFieldsWithJavadoc/out/FieldsWithJavadocData.java
new file mode 100644
index 0000000..a6e602e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testFieldsWithJavadoc/out/FieldsWithJavadocData.java
@@ -0,0 +1,24 @@
+package p;
+
+public class FieldsWithJavadocData {
+	/**
+	 * the test field
+	 */
+	private String[] test;
+	/** val field */
+	private int[] val;
+	public FieldsWithJavadocData() {
+	}
+	public String[] getTest() {
+		return test;
+	}
+	public void setTest(String[] test) {
+		this.test = test;
+	}
+	public int[] getVal() {
+		return val;
+	}
+	public void setVal(int[] val) {
+		this.val = val;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testImportRemove/in/ImportRemove.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testImportRemove/in/ImportRemove.java
new file mode 100644
index 0000000..72f0811
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testImportRemove/in/ImportRemove.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+import java.util.ArrayList;
+
+public class ImportRemove {
+	private ArrayList list;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testImportRemove/out/ImportRemove.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testImportRemove/out/ImportRemove.java
new file mode 100644
index 0000000..8a266bb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testImportRemove/out/ImportRemove.java
@@ -0,0 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+
+public class ImportRemove {
+	private ImportRemoveParameter parameterObject = new ImportRemoveParameter();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testImportRemove/out/ImportRemoveParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testImportRemove/out/ImportRemoveParameter.java
new file mode 100644
index 0000000..2d8c50f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testImportRemove/out/ImportRemoveParameter.java
@@ -0,0 +1,9 @@
+package p;
+
+import java.util.ArrayList;
+
+public class ImportRemoveParameter {
+	public ArrayList list;
+	public ImportRemoveParameter() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/in/InheritanceUpdate.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/in/InheritanceUpdate.java
new file mode 100644
index 0000000..669a158
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/in/InheritanceUpdate.java
@@ -0,0 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class InheritanceUpdate {
+	protected String test;
+	protected int test2;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/in/InheritanceUpdateImpl.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/in/InheritanceUpdateImpl.java
new file mode 100644
index 0000000..91ef600
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/in/InheritanceUpdateImpl.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class InheritanceUpdateImpl extends InheritanceUpdate{
+	protected String test="Test";
+	public void foo() {
+		System.out.println("Test:"+test+" Super:"+super.test);
+		test2++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/out/InheritanceUpdate.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/out/InheritanceUpdate.java
new file mode 100644
index 0000000..c99781d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/out/InheritanceUpdate.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class InheritanceUpdate {
+	protected InheritanceUpdateParameter parameterObject = new InheritanceUpdateParameter();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/out/InheritanceUpdateImpl.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/out/InheritanceUpdateImpl.java
new file mode 100644
index 0000000..30ad085
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/out/InheritanceUpdateImpl.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class InheritanceUpdateImpl extends InheritanceUpdate{
+	protected String test="Test";
+	public void foo() {
+		System.out.println("Test:"+test+" Super:"+super.parameterObject.test);
+		parameterObject.test2++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/out/InheritanceUpdateParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/out/InheritanceUpdateParameter.java
new file mode 100644
index 0000000..1a8f223
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdate/out/InheritanceUpdateParameter.java
@@ -0,0 +1,8 @@
+package p;
+
+public class InheritanceUpdateParameter {
+	public String test;
+	public int test2;
+	public InheritanceUpdateParameter() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/in/InheritanceUpdateGetterSetter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/in/InheritanceUpdateGetterSetter.java
new file mode 100644
index 0000000..ee8e1c0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/in/InheritanceUpdateGetterSetter.java
@@ -0,0 +1,11 @@
+package p;
+
+public class InheritanceUpdateGetterSetter {
+	protected String test;
+	protected int test2;
+
+	public void foo() {
+		this.test=test;
+		new InheritanceUpdateGetterSetter().test=this.test;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/in/InheritanceUpdateImplGetterSetter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/in/InheritanceUpdateImplGetterSetter.java
new file mode 100644
index 0000000..05a3509
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/in/InheritanceUpdateImplGetterSetter.java
@@ -0,0 +1,10 @@
+package p;
+
+public class InheritanceUpdateImplGetterSetter extends InheritanceUpdateGetterSetter{
+	protected String test="Test";
+	public void foo() {
+		System.out.println("Test:"+test+" Super:"+super.test);
+		test2++;
+		super.test2*=2;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/out/InheritanceUpdateGetterSetter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/out/InheritanceUpdateGetterSetter.java
new file mode 100644
index 0000000..69e081c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/out/InheritanceUpdateGetterSetter.java
@@ -0,0 +1,10 @@
+package p;
+
+public class InheritanceUpdateGetterSetter {
+	protected InheritanceUpdateGetterSetterParameter parameterObject = new InheritanceUpdateGetterSetterParameter();
+
+	public void foo() {
+		this.parameterObject.setTest(parameterObject.getTest());
+		new InheritanceUpdateGetterSetter().parameterObject.setTest(this.parameterObject.getTest());
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/out/InheritanceUpdateGetterSetterParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/out/InheritanceUpdateGetterSetterParameter.java
new file mode 100644
index 0000000..23a16f0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/out/InheritanceUpdateGetterSetterParameter.java
@@ -0,0 +1,20 @@
+package p;
+
+public class InheritanceUpdateGetterSetterParameter {
+	private String test;
+	private int test2;
+	public InheritanceUpdateGetterSetterParameter() {
+	}
+	public String getTest() {
+		return test;
+	}
+	public void setTest(String test) {
+		this.test = test;
+	}
+	public int getTest2() {
+		return test2;
+	}
+	public void setTest2(int test2) {
+		this.test2 = test2;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/out/InheritanceUpdateImplGetterSetter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/out/InheritanceUpdateImplGetterSetter.java
new file mode 100644
index 0000000..379e988
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInheritanceUpdateGetterSetter/out/InheritanceUpdateImplGetterSetter.java
@@ -0,0 +1,10 @@
+package p;
+
+public class InheritanceUpdateImplGetterSetter extends InheritanceUpdateGetterSetter{
+	protected String test="Test";
+	public void foo() {
+		System.out.println("Test:"+test+" Super:"+super.parameterObject.getTest());
+		parameterObject.setTest2(parameterObject.getTest2() + 1);
+		super.parameterObject.setTest2(super.parameterObject.getTest2() * 2);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInitializerProblem/in/InitializerProblem.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInitializerProblem/in/InitializerProblem.java
new file mode 100644
index 0000000..4de3792
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInitializerProblem/in/InitializerProblem.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+import java.util.ArrayList;
+
+class A {
+	public int foo() {
+		return 5;
+	}
+}
+
+public class InitializerProblem extends A{
+	public int test= foo();
+	public int test2= test;
+	public ArrayList list= new ArrayList();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInitializerProblem/out/InitializerProblem.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInitializerProblem/out/InitializerProblem.java
new file mode 100644
index 0000000..645a772
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInitializerProblem/out/InitializerProblem.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+import java.util.ArrayList;
+
+class A {
+	public int foo() {
+		return 5;
+	}
+}
+
+public class InitializerProblem extends A{
+	public InitializerProblemParameter parameterObject = new InitializerProblemParameter(foo(), new ArrayList());
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInitializerProblem/out/InitializerProblemParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInitializerProblem/out/InitializerProblemParameter.java
new file mode 100644
index 0000000..ac8a73f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInitializerProblem/out/InitializerProblemParameter.java
@@ -0,0 +1,13 @@
+package p;
+
+import java.util.ArrayList;
+
+public class InitializerProblemParameter {
+	public int test;
+	public int test2 = test;
+	public ArrayList list;
+	public InitializerProblemParameter(int test, ArrayList list) {
+		this.test = test;
+		this.list = list;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInnerDocumentedClass/in/InnerDocumentedClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInnerDocumentedClass/in/InnerDocumentedClass.java
new file mode 100644
index 0000000..a27bf2d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInnerDocumentedClass/in/InnerDocumentedClass.java
@@ -0,0 +1,11 @@
+package p;
+
+public class InnerDocumentedClass {
+	/* This comment is really important
+	 * because it will cause the 
+	 * sourceRange to be different
+	 */
+	public class InnerClass {
+		private int foo;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInnerDocumentedClass/out/InnerClassParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInnerDocumentedClass/out/InnerClassParameter.java
new file mode 100644
index 0000000..b5d86e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInnerDocumentedClass/out/InnerClassParameter.java
@@ -0,0 +1,13 @@
+package p;
+
+public class InnerClassParameter {
+	private int foo;
+	public InnerClassParameter() {
+	}
+	public int getFoo() {
+		return foo;
+	}
+	public void setFoo(int foo) {
+		this.foo = foo;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInnerDocumentedClass/out/InnerDocumentedClass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInnerDocumentedClass/out/InnerDocumentedClass.java
new file mode 100644
index 0000000..e46144d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testInnerDocumentedClass/out/InnerDocumentedClass.java
@@ -0,0 +1,11 @@
+package p;
+
+public class InnerDocumentedClass {
+	/* This comment is really important
+	 * because it will cause the 
+	 * sourceRange to be different
+	 */
+	public class InnerClass {
+		private InnerClassParameter parameterObject = new InnerClassParameter();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testLowestVisibility/in/LowestVisibility.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testLowestVisibility/in/LowestVisibility.java
new file mode 100644
index 0000000..1670589
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testLowestVisibility/in/LowestVisibility.java
@@ -0,0 +1,5 @@
+package p;
+public class LowestVisibility {
+	private int test2;
+	int test;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testLowestVisibility/out/LowestVisibility.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testLowestVisibility/out/LowestVisibility.java
new file mode 100644
index 0000000..284d435
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testLowestVisibility/out/LowestVisibility.java
@@ -0,0 +1,4 @@
+package p;
+public class LowestVisibility {
+	LowestVisibilityParameter parameterObject = new LowestVisibilityParameter();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testLowestVisibility/out/LowestVisibilityParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testLowestVisibility/out/LowestVisibilityParameter.java
new file mode 100644
index 0000000..1a35655
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testLowestVisibility/out/LowestVisibilityParameter.java
@@ -0,0 +1,20 @@
+package p;
+
+public class LowestVisibilityParameter {
+	private int test2;
+	private int test;
+	public LowestVisibilityParameter() {
+	}
+	public int getTest2() {
+		return test2;
+	}
+	public void setTest2(int test2) {
+		this.test2 = test2;
+	}
+	public int getTest() {
+		return test;
+	}
+	public void setTest(int test) {
+		this.test = test;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testMethodUpdate/in/MethodUpdate.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testMethodUpdate/in/MethodUpdate.java
new file mode 100644
index 0000000..f3d88f3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testMethodUpdate/in/MethodUpdate.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class MethodUpdate {
+	private int test;
+	
+	public void foo(){
+		System.out.println(test);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testMethodUpdate/out/MethodUpdate.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testMethodUpdate/out/MethodUpdate.java
new file mode 100644
index 0000000..31eac84
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testMethodUpdate/out/MethodUpdate.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class MethodUpdate {
+	private MethodUpdateParameter parameterObject = new MethodUpdateParameter();
+
+	public void foo(){
+		System.out.println(parameterObject.test);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testMethodUpdate/out/MethodUpdateParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testMethodUpdate/out/MethodUpdateParameter.java
new file mode 100644
index 0000000..9e94903
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testMethodUpdate/out/MethodUpdateParameter.java
@@ -0,0 +1,7 @@
+package p;
+
+public class MethodUpdateParameter {
+	public int test;
+	public MethodUpdateParameter() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testPackageReferences/in/PackEx.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testPackageReferences/in/PackEx.java
new file mode 100644
index 0000000..6badb41
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testPackageReferences/in/PackEx.java
@@ -0,0 +1,7 @@
+package p.subPack;
+
+public class PackEx {
+	protected class OtherPackageProteced {
+		public OtherPackageProteced(){}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testPackageReferences/in/PackageReferences.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testPackageReferences/in/PackageReferences.java
new file mode 100644
index 0000000..62475f4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testPackageReferences/in/PackageReferences.java
@@ -0,0 +1,16 @@
+package p;
+
+import p.subPack.PackEx;
+
+public class PackageReferences extends PackEx{
+	private class PrivateInner {
+		
+	}
+	
+	protected class ProtectedInner {
+		
+	}
+	ProtectedInner protectedInner= new ProtectedInner();
+	PrivateInner privateInner= new PrivateInner();
+	OtherPackageProteced packEx= new OtherPackageProteced();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testQualifiedIncrements/in/QualifiedIncrements.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testQualifiedIncrements/in/QualifiedIncrements.java
new file mode 100644
index 0000000..c1915ad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testQualifiedIncrements/in/QualifiedIncrements.java
@@ -0,0 +1,15 @@
+package p;
+public class QualifiedIncrements {
+        private int test;
+        private void foo() {
+                QualifiedIncrements qi = new QualifiedIncrements();
+                qi.test++;
+                new QualifiedIncrements().test++;
+                next().test++;
+                (qi).test++;
+                new QualifiedIncrements().test= 1;
+        }
+		private QualifiedIncrements next() {
+			return new QualifiedIncrements();
+		}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testQualifiedIncrements/out/QualifiedIncrements.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testQualifiedIncrements/out/QualifiedIncrements.java
new file mode 100644
index 0000000..1d790a4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testQualifiedIncrements/out/QualifiedIncrements.java
@@ -0,0 +1,15 @@
+package p;
+public class QualifiedIncrements {
+        private QualifiedIncrementsParameter parameterObject = new QualifiedIncrementsParameter();
+		private void foo() {
+                QualifiedIncrements qi = new QualifiedIncrements();
+                qi.parameterObject.setTest(qi.parameterObject.getTest() + 1);
+                new QualifiedIncrements().parameterObject.setTest(new QualifiedIncrements().parameterObject.getTest() + 1);
+                next().parameterObject.setTest(next().parameterObject.getTest() + 1);
+                (qi).parameterObject.setTest((qi).parameterObject.getTest() + 1);
+                new QualifiedIncrements().parameterObject.setTest(1);
+        }
+		private QualifiedIncrements next() {
+			return new QualifiedIncrements();
+		}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testQualifiedIncrements/out/QualifiedIncrementsParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testQualifiedIncrements/out/QualifiedIncrementsParameter.java
new file mode 100644
index 0000000..43eec9b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testQualifiedIncrements/out/QualifiedIncrementsParameter.java
@@ -0,0 +1,13 @@
+package p;
+
+public class QualifiedIncrementsParameter {
+	private int test;
+	public QualifiedIncrementsParameter() {
+	}
+	public int getTest() {
+		return test;
+	}
+	public void setTest(int test) {
+		this.test = test;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testStaticInstanceFields/in/StaticInstanceFields.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testStaticInstanceFields/in/StaticInstanceFields.java
new file mode 100644
index 0000000..3867002
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testStaticInstanceFields/in/StaticInstanceFields.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class StaticInstanceFields {
+	private static String test;
+	public void foo() {
+		System.out.println(test);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testStaticInstanceFields/out/StaticInstanceFields.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testStaticInstanceFields/out/StaticInstanceFields.java
new file mode 100644
index 0000000..3867002
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testStaticInstanceFields/out/StaticInstanceFields.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class StaticInstanceFields {
+	private static String test;
+	public void foo() {
+		System.out.println(test);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCase/in/SwitchCase.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCase/in/SwitchCase.java
new file mode 100644
index 0000000..5a1a719
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCase/in/SwitchCase.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class SwitchCase {
+	private static final int TEST2 = 6;
+	public final int TEST = TEST2;
+	public void foo(){
+		int test=5;
+		switch (test) {
+		case TEST:
+			break;
+		default:
+			break;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCase/out/SwitchCase.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCase/out/SwitchCase.java
new file mode 100644
index 0000000..04ec927
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCase/out/SwitchCase.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+package p;
+
+public class SwitchCase {
+	private static final int TEST2 = 6;
+	public SwitchCaseParameter parameterObject = new SwitchCaseParameter(TEST2);
+	public void foo(){
+		int test=5;
+		switch (test) {
+		case parameterObject.TEST:
+			break;
+		default:
+			break;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCase/out/SwitchCaseParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCase/out/SwitchCaseParameter.java
new file mode 100644
index 0000000..74459cd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCase/out/SwitchCaseParameter.java
@@ -0,0 +1,8 @@
+package p;
+
+public class SwitchCaseParameter {
+	public final int TEST;
+	public SwitchCaseParameter(int test) {
+		TEST = test;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCaseUpdates/in/SwitchCaseUpdates.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCaseUpdates/in/SwitchCaseUpdates.java
new file mode 100644
index 0000000..83a4092
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCaseUpdates/in/SwitchCaseUpdates.java
@@ -0,0 +1,12 @@
+package p;
+
+public class SwitchCaseUpdates {
+	private int test;
+	private void foo() {
+		switch (test) {
+		case 5: test=7;
+				break;
+		case 7: test=5;
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCaseUpdates/out/SwitchCaseUpdates.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCaseUpdates/out/SwitchCaseUpdates.java
new file mode 100644
index 0000000..1e68d56
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCaseUpdates/out/SwitchCaseUpdates.java
@@ -0,0 +1,12 @@
+package p;
+
+public class SwitchCaseUpdates {
+	private SwitchCaseUpdatesParameter parameterObject = new SwitchCaseUpdatesParameter();
+	private void foo() {
+		switch (parameterObject.getTest()) {
+		case 5: parameterObject.setTest(7);
+				break;
+		case 7: parameterObject.setTest(5);
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCaseUpdates/out/SwitchCaseUpdatesParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCaseUpdates/out/SwitchCaseUpdatesParameter.java
new file mode 100644
index 0000000..2b7e576
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testSwitchCaseUpdates/out/SwitchCaseUpdatesParameter.java
@@ -0,0 +1,13 @@
+package p;
+
+public class SwitchCaseUpdatesParameter {
+	private int test;
+	public SwitchCaseUpdatesParameter() {
+	}
+	public int getTest() {
+		return test;
+	}
+	public void setTest(int test) {
+		this.test = test;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUFOGetter/in/UFOGetter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUFOGetter/in/UFOGetter.java
new file mode 100644
index 0000000..4d1fe22
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUFOGetter/in/UFOGetter.java
@@ -0,0 +1,22 @@
+package p;
+public class UFOGetter {
+        private int x;
+        private int y;
+        private int z;
+
+        private String homePlanet;
+
+        public UFOGetter(int x, int y, int z, 
+                        String homePlanet) {
+                this.x= x;
+                this.y= y;
+                this.z= z;
+                this.homePlanet= homePlanet;
+        }
+
+        public String toString() {
+                return "An UFO from " + homePlanet +
+                        "is at position " +
+                        "[" + x + ", " + y + ", " + z + "]";
+        }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUFOGetter/out/Position.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUFOGetter/out/Position.java
new file mode 100644
index 0000000..1ed0b24
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUFOGetter/out/Position.java
@@ -0,0 +1,27 @@
+package p;
+
+public class Position {
+	private int x;
+	private int y;
+	private int z;
+	public Position() {
+	}
+	public int getX() {
+		return x;
+	}
+	public void setX(int x) {
+		this.x = x;
+	}
+	public int getY() {
+		return y;
+	}
+	public void setY(int y) {
+		this.y = y;
+	}
+	public int getZ() {
+		return z;
+	}
+	public void setZ(int z) {
+		this.z = z;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUFOGetter/out/UFOGetter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUFOGetter/out/UFOGetter.java
new file mode 100644
index 0000000..e7b9282
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUFOGetter/out/UFOGetter.java
@@ -0,0 +1,19 @@
+package p;
+public class UFOGetter {
+        private Position position = new Position();
+		private String homePlanet;
+
+        public UFOGetter(int x, int y, int z, 
+                        String homePlanet) {
+                this.position.setX(x);
+                this.position.setY(y);
+                this.position.setZ(z);
+                this.homePlanet= homePlanet;
+        }
+
+        public String toString() {
+                return "An UFO from " + homePlanet +
+                        "is at position " +
+                        "[" + position.getX() + ", " + position.getY() + ", " + position.getZ() + "]";
+        }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUpdateSimpleName/in/UpdateSimpleName.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUpdateSimpleName/in/UpdateSimpleName.java
new file mode 100644
index 0000000..73b58e4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUpdateSimpleName/in/UpdateSimpleName.java
@@ -0,0 +1,16 @@
+package p;
+
+public class UpdateSimpleName {
+	private int foo;
+	private int foo2;
+	public void foo() {
+		foo=foo2;
+		this.foo=foo2;
+		foo=this.foo2;
+		foo=Math.abs(foo);
+		UpdateSimpleName usn= new UpdateSimpleName();
+		usn.foo= usn.foo2;
+		usn.foo= foo;
+		usn.foo2++;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUpdateSimpleName/out/UpdateSimpleName.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUpdateSimpleName/out/UpdateSimpleName.java
new file mode 100644
index 0000000..1a0f535
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUpdateSimpleName/out/UpdateSimpleName.java
@@ -0,0 +1,15 @@
+package p;
+
+public class UpdateSimpleName {
+	private UpdateSimpleNameParameter parameterObject = new UpdateSimpleNameParameter();
+	public void foo() {
+		parameterObject.setFoo(parameterObject.getFoo2());
+		this.parameterObject.setFoo(parameterObject.getFoo2());
+		parameterObject.setFoo(this.parameterObject.getFoo2());
+		parameterObject.setFoo(Math.abs(parameterObject.getFoo()));
+		UpdateSimpleName usn= new UpdateSimpleName();
+		usn.parameterObject.setFoo(usn.parameterObject.getFoo2());
+		usn.parameterObject.setFoo(parameterObject.getFoo());
+		usn.parameterObject.setFoo2(usn.parameterObject.getFoo2() + 1);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUpdateSimpleName/out/UpdateSimpleNameParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUpdateSimpleName/out/UpdateSimpleNameParameter.java
new file mode 100644
index 0000000..a78f128
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testUpdateSimpleName/out/UpdateSimpleNameParameter.java
@@ -0,0 +1,20 @@
+package p;
+
+public class UpdateSimpleNameParameter {
+	private int foo;
+	private int foo2;
+	public UpdateSimpleNameParameter() {
+	}
+	public int getFoo() {
+		return foo;
+	}
+	public void setFoo(int foo) {
+		this.foo = foo;
+	}
+	public int getFoo2() {
+		return foo2;
+	}
+	public void setFoo2(int foo2) {
+		this.foo2 = foo2;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testVariableDeclarationInitializer/in/VariableDeclarationInitializer.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testVariableDeclarationInitializer/in/VariableDeclarationInitializer.java
new file mode 100644
index 0000000..8fdfe08
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testVariableDeclarationInitializer/in/VariableDeclarationInitializer.java
@@ -0,0 +1,10 @@
+package p;
+
+public class VariableDeclarationInitializer {
+	private int test = 5;
+
+	public void foo() {
+		int x = test;
+		int test = this.test;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testVariableDeclarationInitializer/out/VariableDeclarationInitializer.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testVariableDeclarationInitializer/out/VariableDeclarationInitializer.java
new file mode 100644
index 0000000..069b3b7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testVariableDeclarationInitializer/out/VariableDeclarationInitializer.java
@@ -0,0 +1,10 @@
+package p;
+
+public class VariableDeclarationInitializer {
+	private VariableDeclarationInitializerParameter parameterObject = new VariableDeclarationInitializerParameter(5);
+
+	public void foo() {
+		int x = parameterObject.getTest();
+		int test = this.parameterObject.getTest();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testVariableDeclarationInitializer/out/VariableDeclarationInitializerParameter.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testVariableDeclarationInitializer/out/VariableDeclarationInitializerParameter.java
new file mode 100644
index 0000000..7cb998b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testVariableDeclarationInitializer/out/VariableDeclarationInitializerParameter.java
@@ -0,0 +1,14 @@
+package p;
+
+public class VariableDeclarationInitializerParameter {
+	private int test;
+	public VariableDeclarationInitializerParameter(int test) {
+		this.test = test;
+	}
+	public int getTest() {
+		return test;
+	}
+	public void setTest(int test) {
+		this.test = test;
+	}
+}
\ No newline at end of file