initial commit in accordance with CQ 3784
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test0_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test0_in.java
new file mode 100644
index 0000000..d24ca4b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test0_in.java
@@ -0,0 +1,7 @@
+package p;
+//initialize in method
+class A{
+	void f(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test0_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test0_out.java
new file mode 100644
index 0000000..0956f75
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test0_out.java
@@ -0,0 +1,9 @@
+package p;
+//initialize in method
+class A{
+	private int i;
+
+	void f(){
+		i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test10_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test10_in.java
new file mode 100644
index 0000000..11d4b3d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test10_in.java
@@ -0,0 +1,9 @@
+package p;
+//final
+class A{
+	A(){
+	}
+	void f(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test10_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test10_out.java
new file mode 100644
index 0000000..e6d864f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test10_out.java
@@ -0,0 +1,10 @@
+package p;
+//final
+class A{
+	private final int i;
+	A(){
+		i= 0;
+	}
+	void f(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test11_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test11_in.java
new file mode 100644
index 0000000..898e5c3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test11_in.java
@@ -0,0 +1,9 @@
+package p;
+//public
+class A{
+	A(){
+	}
+	void f(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test11_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test11_out.java
new file mode 100644
index 0000000..fdd2d2c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test11_out.java
@@ -0,0 +1,10 @@
+package p;
+//public
+class A{
+	public int i;
+	A(){
+	}
+	void f(){
+		i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test12_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test12_in.java
new file mode 100644
index 0000000..0e48d3b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test12_in.java
@@ -0,0 +1,7 @@
+package p;
+//initialize in method
+class A{
+	static void f(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test12_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test12_out.java
new file mode 100644
index 0000000..949b9d9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test12_out.java
@@ -0,0 +1,9 @@
+package p;
+//initialize in method
+class A{
+	private static int i;
+
+	static void f(){
+		i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test13_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test13_in.java
new file mode 100644
index 0000000..1e2d00e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test13_in.java
@@ -0,0 +1,7 @@
+package p;
+//initialize in method
+class A{
+	static void f(){
+		int i= 0, j= i;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test13_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test13_out.java
new file mode 100644
index 0000000..900f236
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test13_out.java
@@ -0,0 +1,10 @@
+package p;
+//initialize in method
+class A{
+	private static int i;
+
+	static void f(){
+		i= 0;
+		int j= i;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test14_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test14_in.java
new file mode 100644
index 0000000..b71c0d8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test14_in.java
@@ -0,0 +1,7 @@
+package p;
+//initialize in method
+class A{
+	static void f(){
+		int j= 0, i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test14_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test14_out.java
new file mode 100644
index 0000000..cb9c1ba
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test14_out.java
@@ -0,0 +1,10 @@
+package p;
+//initialize in method
+class A{
+	private static int i;
+
+	static void f(){
+		int j= 0;
+		i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test15_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test15_in.java
new file mode 100644
index 0000000..5eefe8e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test15_in.java
@@ -0,0 +1,7 @@
+package p;
+//initialize in method
+class A{
+	static void f(){
+		int j= 0, i= 0, k;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test15_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test15_out.java
new file mode 100644
index 0000000..171daf7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test15_out.java
@@ -0,0 +1,11 @@
+package p;
+//initialize in method
+class A{
+	private static int i;
+
+	static void f(){
+		int j= 0;
+		i= 0;
+		int k;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test16_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test16_in.java
new file mode 100644
index 0000000..edcbba6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test16_in.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+	A(){
+		this(5);
+	}
+	A(int u){
+		super();
+	}
+	void f(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test16_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test16_out.java
new file mode 100644
index 0000000..3362abc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test16_out.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	private int i;
+	A(){
+		this(5);
+	}
+	A(int u){
+		super();
+		i= 0;
+	}
+	void f(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test17_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test17_in.java
new file mode 100644
index 0000000..690a085
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test17_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void f(){
+		int i;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test17_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test17_out.java
new file mode 100644
index 0000000..caea7fe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test17_out.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	private int i;
+
+	void f(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test18_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test18_in.java
new file mode 100644
index 0000000..1a2c26a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test18_in.java
@@ -0,0 +1,8 @@
+package p;
+class A {
+	private static class Bar {
+		public void baz() {
+			int i = 0;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test18_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test18_out.java
new file mode 100644
index 0000000..356cb93
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test18_out.java
@@ -0,0 +1,14 @@
+package p;
+class A {
+	private static class Bar {
+		private int i;
+
+		private Bar() {
+			i = 0;
+			// TODO Auto-generated constructor stub
+		}
+
+		public void baz() {
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test19_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test19_in.java
new file mode 100644
index 0000000..06ba6bb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test19_in.java
@@ -0,0 +1,6 @@
+package p;
+class A {
+	void someMethod(){
+		int someArray[];
+ 	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test19_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test19_out.java
new file mode 100644
index 0000000..21c0790
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test19_out.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	private int fSomeArray[];
+
+	void someMethod(){
+ 	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test1_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test1_in.java
new file mode 100644
index 0000000..5e7ae68
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test1_in.java
@@ -0,0 +1,7 @@
+package p;
+//initialize in declaration
+class A{
+	void f(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test1_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test1_out.java
new file mode 100644
index 0000000..b559013
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test1_out.java
@@ -0,0 +1,8 @@
+package p;
+//initialize in declaration
+class A{
+	private int i= 0;
+
+	void f(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test20_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test20_in.java
new file mode 100644
index 0000000..c6cdd61
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test20_in.java
@@ -0,0 +1,6 @@
+package p;
+class A {
+	void someMethod(){
+		double[] doubleDim[];
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test20_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test20_out.java
new file mode 100644
index 0000000..6245722
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test20_out.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	private double[] fDoubleDim[];
+
+	void someMethod(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test21_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test21_in.java
new file mode 100644
index 0000000..d189d24
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test21_in.java
@@ -0,0 +1,14 @@
+package p;
+class A {
+	public static void method2(final int i) {
+		final I x = new I() {//<-- refactor->convert local variable x to field
+			public void methodI() {
+				int y = 3;
+			}
+		};
+		I y= x;
+	}
+}
+interface I {
+	void methodI();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test21_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test21_out.java
new file mode 100644
index 0000000..a63194e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test21_out.java
@@ -0,0 +1,15 @@
+package p;
+class A {
+	private static final I fgX= new I() {//<-- refactor->convert local variable x to field
+		public void methodI() {
+			int y = 3;
+		}
+	};
+
+	public static void method2(final int i) {
+		I y= fgX;
+	}
+}
+interface I {
+	void methodI();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test22_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test22_in.java
new file mode 100644
index 0000000..55e85df
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test22_in.java
@@ -0,0 +1,8 @@
+package p;
+class A {
+	void m() {
+		SortByDefiningTypeAction fSortByDefiningTypeAction= new SortByDefiningTypeAction();
+	}
+}
+class SortByDefiningTypeAction {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test23_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test23_in.java
new file mode 100644
index 0000000..9d3f6e5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test23_in.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+    void m() {
+        int count= 12;
+        System.out.println(count)
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test23_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test23_out.java
new file mode 100644
index 0000000..9263d4a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test23_out.java
@@ -0,0 +1,8 @@
+package p;
+class A {
+    private int fCount= 12;
+
+	void m() {
+        System.out.println(fCount)
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test24_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test24_in.java
new file mode 100644
index 0000000..47ccce6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test24_in.java
@@ -0,0 +1,6 @@
+package p;
+class A {
+    void m() {
+        final boolean[] finished= { false };
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test24_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test24_out.java
new file mode 100644
index 0000000..69d6328
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test24_out.java
@@ -0,0 +1,8 @@
+package p;
+class A {
+    private boolean[] fFinisheds;
+
+	void m() {
+        fFinisheds= new boolean[]{ false };
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test25_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test25_in.java
new file mode 100644
index 0000000..d9e622b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test25_in.java
@@ -0,0 +1,11 @@
+package p;
+//initialize in method
+class A{
+	void f(){
+		switch (1) {
+			case 1:
+				int i = 0;
+				break;
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test25_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test25_out.java
new file mode 100644
index 0000000..b9d79e3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test25_out.java
@@ -0,0 +1,13 @@
+package p;
+//initialize in method
+class A{
+	private int i;
+
+	void f(){
+		switch (1) {
+			case 1:
+				i= 0;
+				break;
+		}
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test2_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test2_in.java
new file mode 100644
index 0000000..25302ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test2_in.java
@@ -0,0 +1,9 @@
+package p;
+//initialize in constructor
+class A{
+	A(){
+	}
+	void f(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test2_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test2_out.java
new file mode 100644
index 0000000..7aeefce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test2_out.java
@@ -0,0 +1,10 @@
+package p;
+//initialize in constructor
+class A{
+	private int i;
+	A(){
+		i= 0;
+	}
+	void f(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test3_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test3_in.java
new file mode 100644
index 0000000..b6bed8b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test3_in.java
@@ -0,0 +1,12 @@
+package p;
+//initialize in constructors
+class A{
+	A(){
+	}
+	A(int e){
+	}
+	void f(){
+		int i= 0;
+		i++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test3_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test3_out.java
new file mode 100644
index 0000000..f610888
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test3_out.java
@@ -0,0 +1,14 @@
+package p;
+//initialize in constructors
+class A{
+	private int i;
+	A(){
+		i= 0;
+	}
+	A(int e){
+		i= 0;
+	}
+	void f(){
+		i++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test4_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test4_in.java
new file mode 100644
index 0000000..13826ee
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test4_in.java
@@ -0,0 +1,8 @@
+package p;
+//initialize in constructors
+class A{
+	void f(){
+		int i= 0;
+		i++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test4_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test4_out.java
new file mode 100644
index 0000000..5ed6fa5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test4_out.java
@@ -0,0 +1,16 @@
+package p;
+//initialize in constructors
+class A{
+	private int i;
+
+	/**
+	 * 
+	 */
+	A() {
+		i= 0;
+	}
+
+	void f(){
+		i++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test5_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test5_in.java
new file mode 100644
index 0000000..c75b1d4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test5_in.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	void f(){
+		new Object(){
+			void fx(){
+				int i= 0;
+			}	
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test5_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test5_out.java
new file mode 100644
index 0000000..d01037b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test5_out.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+	void f(){
+		new Object(){
+			private int i;
+
+			void fx(){
+				i= 0;
+			}	
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test6_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test6_in.java
new file mode 100644
index 0000000..8a2eb40
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test6_in.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	void f(){
+		new Object(){
+			void fx(){
+				int i= s();
+			}
+			int s(){return 3;}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test6_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test6_out.java
new file mode 100644
index 0000000..1a269a4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test6_out.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	void f(){
+		new Object(){
+			private int i= s();
+			void fx(){
+			}
+			int s(){return 3;}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test7_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test7_in.java
new file mode 100644
index 0000000..95bd5da
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test7_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void f(){
+		int i= 0, j= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test7_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test7_out.java
new file mode 100644
index 0000000..8493585
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test7_out.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	private int i= 0;
+
+	void f(){
+		int j= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test8_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test8_in.java
new file mode 100644
index 0000000..95bd5da
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test8_in.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void f(){
+		int i= 0, j= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test8_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test8_out.java
new file mode 100644
index 0000000..3117a50
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test8_out.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	private int i;
+
+	void f(){
+		i= 0;
+		int j= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test9_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test9_in.java
new file mode 100644
index 0000000..871629c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test9_in.java
@@ -0,0 +1,8 @@
+package p;
+//renaming
+class A{
+	void f(){
+		int i= 0;
+		i++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test9_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test9_out.java
new file mode 100644
index 0000000..2c59c6c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_test9_out.java
@@ -0,0 +1,10 @@
+package p;
+//renaming
+class A{
+	private int field;
+
+	void f(){
+		field= 0;
+		field++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testDeclaringMethodBindingUnavailable01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testDeclaringMethodBindingUnavailable01_in.java
new file mode 100644
index 0000000..3a29062
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testDeclaringMethodBindingUnavailable01_in.java
@@ -0,0 +1,11 @@
+// 9, 14, 9, 18
+package p;
+import java.util.Date;
+class A {
+	void a() {
+	}
+
+	void a() {
+		Date date= new Date(2006, 5, 3);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testDeclaringMethodBindingUnavailable01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testDeclaringMethodBindingUnavailable01_out.java
new file mode 100644
index 0000000..ea78128
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testDeclaringMethodBindingUnavailable01_out.java
@@ -0,0 +1,13 @@
+// 9, 14, 9, 18
+package p;
+import java.util.Date;
+class A {
+	private Date fDate;
+
+	void a() {
+	}
+
+	void a() {
+		fDate= new Date(2006, 5, 3);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum1_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum1_in.java
new file mode 100644
index 0000000..03cba9a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum1_in.java
@@ -0,0 +1,8 @@
+//6, 13, 6, 16
+package p;
+enum A {
+	ONE, TWO();
+	public void f(){
+		int var=0;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum1_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum1_out.java
new file mode 100644
index 0000000..b840259
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum1_out.java
@@ -0,0 +1,16 @@
+//6, 13, 6, 16
+package p;
+enum A {
+	ONE, TWO();
+	private final int fVar;
+
+	/**
+	 * 
+	 */
+	A() {
+		fVar= 0;
+	}
+
+	public void f(){
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum2_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum2_in.java
new file mode 100644
index 0000000..1a15a8c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum2_in.java
@@ -0,0 +1,12 @@
+//10, 21, 10, 21
+package p;
+
+class C {
+	enum Member {
+		FIRST, SECOND;
+	}
+	void use() {
+		Member m= Member.SECOND;
+		Member m2= m;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum2_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum2_out.java
new file mode 100644
index 0000000..0abc483
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testEnum2_out.java
@@ -0,0 +1,12 @@
+//10, 21, 10, 21
+package p;
+
+class C {
+	public static final Member fM= Member.SECOND;
+	enum Member {
+		FIRST, SECOND;
+	}
+	void use() {
+		Member m2= fM;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics01_in.java
new file mode 100644
index 0000000..b6fe2bc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics01_in.java
@@ -0,0 +1,12 @@
+//9, 9, 9, 11
+package p;
+
+import java.util.Vector;
+
+class A<T> {
+	void m() {
+		Vector<T> vt= new Vector<T>();
+		vt.clear();
+		vt= new Vector();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics01_out.java
new file mode 100644
index 0000000..dd7858a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics01_out.java
@@ -0,0 +1,13 @@
+//9, 9, 9, 11
+package p;
+
+import java.util.Vector;
+
+class A<T> {
+	private Vector<T> fVt= new Vector<T>();
+
+	void m() {
+		fVt.clear();
+		fVt= new Vector();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics02_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics02_in.java
new file mode 100644
index 0000000..e9c2e87
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics02_in.java
@@ -0,0 +1,8 @@
+//6, 12, 6, 12
+package p;
+
+class A<T> {
+	void m(T arg) {
+		T myT= arg;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics02_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics02_out.java
new file mode 100644
index 0000000..cda8470
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testGenerics02_out.java
@@ -0,0 +1,10 @@
+//6, 12, 6, 12
+package p;
+
+class A<T> {
+	private T fMyT;
+
+	void m(T arg) {
+		fMyT= arg;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment01_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment01_in.java
new file mode 100644
index 0000000..bca101d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment01_in.java
@@ -0,0 +1,11 @@
+// 6, 29, 6, 29
+package p;
+class A {
+	void m() {
+		@Ann(value=0)
+		final double/*64*/ a= 0, b= 1, c= 2, d= 3;
+	}
+}
+@interface Ann {
+	int value();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment01_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment01_out.java
new file mode 100644
index 0000000..0205d47
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment01_out.java
@@ -0,0 +1,15 @@
+// 6, 29, 6, 29
+package p;
+class A {
+	private double/*64*/ fA;
+
+	void m() {
+		fA= 0;
+		@Ann(value=0)
+		final
+		double/*64*/ b= 1, c= 2, d= 3;
+	}
+}
+@interface Ann {
+	int value();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment02_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment02_in.java
new file mode 100644
index 0000000..913f756
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment02_in.java
@@ -0,0 +1,7 @@
+// 5, 29, 5, 29
+package p;
+class A {
+	void m() {
+		double/*64*/ a= 0, b= 1, c= 2, d= 3;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment02_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment02_out.java
new file mode 100644
index 0000000..54eaeb9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment02_out.java
@@ -0,0 +1,11 @@
+// 5, 29, 5, 29
+package p;
+class A {
+	private double/*64*/ fB;
+
+	void m() {
+		double/*64*/ a= 0;
+		fB= 1;
+		double/*64*/ c= 2, d= 3;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment03_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment03_in.java
new file mode 100644
index 0000000..0dd685a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment03_in.java
@@ -0,0 +1,7 @@
+// 5, 72, 5, 72
+package p;
+class A {
+	void m() {
+		@Unavailable(/*should implement*/"s")double/*64*/ a= 0, b= 1, c= 2, d= 3;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment03_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment03_out.java
new file mode 100644
index 0000000..2f1472b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment03_out.java
@@ -0,0 +1,12 @@
+// 5, 72, 5, 72
+package p;
+class A {
+	private double/*64*/ fC;
+
+	void m() {
+		@Unavailable(/*should implement*/"s")double/*64*/ a= 0, b= 1;
+		fC= 2;
+		@Unavailable(/*should implement*/"s")
+		double/*64*/ d= 3;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment04_in.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment04_in.java
new file mode 100644
index 0000000..8702e25
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment04_in.java
@@ -0,0 +1,7 @@
+// 5, 41, 5, 41
+package p;
+class A {
+	void m() {
+		double/*64*/ a= 0, b= 1, c= 2, d= 3;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment04_out.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment04_out.java
new file mode 100644
index 0000000..fb7e5ef
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/canPromote/A_testMultiVariableDeclFragment04_out.java
@@ -0,0 +1,10 @@
+// 5, 41, 5, 41
+package p;
+class A {
+	private double/*64*/ fD;
+
+	void m() {
+		double/*64*/ a= 0, b= 1, c= 2;
+		fD= 3;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail0.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail0.java
new file mode 100644
index 0000000..5017152
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail0.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	void f(int i){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail1.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail1.java
new file mode 100644
index 0000000..1e2327d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail1.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	void f(){
+		try{
+		} catch (Throwable e){
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail2.java
new file mode 100644
index 0000000..8e18a37
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail2.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	void f(){
+		class Local{}
+		Local l;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail4.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail4.java
new file mode 100644
index 0000000..6beaca7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail4.java
@@ -0,0 +1,9 @@
+package p;
+//can't init in constructor - name clash
+class A{
+	A(int i){
+	}
+	void f(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail5.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail5.java
new file mode 100644
index 0000000..9e9244c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFail5.java
@@ -0,0 +1,8 @@
+package p;
+//name clash
+class A{
+	Object i;
+	void f(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFailGenerics1.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFailGenerics1.java
new file mode 100644
index 0000000..c004b68
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/cannotPromote/A_testFailGenerics1.java
@@ -0,0 +1,8 @@
+//6, 12, 6, 12
+package p;
+
+class A {
+	<U> void k(U u) {
+		U you= null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement0.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement0.java
new file mode 100644
index 0000000..3c97977
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement0.java
@@ -0,0 +1,7 @@
+package p;
+//disabled: none
+class A{
+	void f(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement1.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement1.java
new file mode 100644
index 0000000..b55c0fb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement1.java
@@ -0,0 +1,7 @@
+package p;
+//disabled: final, method, field, construcotr
+class A{
+	void f(){
+		int i;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement10.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement10.java
new file mode 100644
index 0000000..e9c2e87
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement10.java
@@ -0,0 +1,8 @@
+//6, 12, 6, 12
+package p;
+
+class A<T> {
+	void m(T arg) {
+		T myT= arg;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement11.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement11.java
new file mode 100644
index 0000000..6a7a80d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement11.java
@@ -0,0 +1,16 @@
+//6, 21, 6, 27
+package p;
+
+class A {
+	<U extends A> void k(final U u) {
+		Callable<A> target= new Callable<A>() {
+			public A call() throws Exception {
+				return u;
+			}
+		};
+	}
+}
+
+interface Callable<E> {
+	E call() throws Exception;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement12.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement12.java
new file mode 100644
index 0000000..cb12cb8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement12.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	void f(){
+		class Local{}
+		Object l= new Local();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement13.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement13.java
new file mode 100644
index 0000000..2830bdf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement13.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	void f(){
+		int j=0, i= j;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement2.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement2.java
new file mode 100644
index 0000000..19b4cf7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement2.java
@@ -0,0 +1,7 @@
+package p;
+//disabled: method, field, constructor, final
+class A{
+	void f(){
+		int i;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement3.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement3.java
new file mode 100644
index 0000000..24ebd6d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement3.java
@@ -0,0 +1,8 @@
+package p;
+//disabled: final
+class A{
+	void f(){
+		int i= 0;
+		i= 1;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement4.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement4.java
new file mode 100644
index 0000000..2ff4177
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement4.java
@@ -0,0 +1,7 @@
+package p;
+//disabled: constructor
+class A{
+	A(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement5.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement5.java
new file mode 100644
index 0000000..02c6bc1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement5.java
@@ -0,0 +1,11 @@
+package p;
+//disabled: constructor
+class A{
+	void f(){
+		new Object(){
+			void g(){
+				int i= 0;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement6.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement6.java
new file mode 100644
index 0000000..b0eaeb0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement6.java
@@ -0,0 +1,11 @@
+package p;
+//disabled: constructor, field, method, final
+class A{
+	void f(){
+		new Object(){
+			void g(){
+				int i;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement7.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement7.java
new file mode 100644
index 0000000..153f4dc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement7.java
@@ -0,0 +1,7 @@
+package p;
+//disabled: construcotor
+class A{
+	static void f(){
+		int i= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement8.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement8.java
new file mode 100644
index 0000000..f90c359
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement8.java
@@ -0,0 +1,6 @@
+package p;
+class A {
+    void f(){
+        int i= 0;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement9.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement9.java
new file mode 100644
index 0000000..7c668e7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PromoteTempToField/testEnablement/A_testEnablement9.java
@@ -0,0 +1,9 @@
+package p;
+class A {
+    void f(){
+        int y= 1 +x();
+    }
+    private int x() {
+        return 0;
+    }
+} 
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test0/in/A.java
new file mode 100644
index 0000000..041a067
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test0/in/A.java
@@ -0,0 +1,6 @@
+package p;

+class A{	

+}

+class B extends A{

+	void m(){}

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

+class A{

+

+	void m() {}	

+}

+class B extends A{

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

+class A{	

+	void x(){}

+}

+class B extends A{

+	protected void m(){}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test1/out/A.java
new file mode 100644
index 0000000..5db597f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test1/out/A.java
@@ -0,0 +1,8 @@
+package p;

+class A{	

+	void x(){}

+

+	protected void m() {}

+}

+class B extends A{

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test10/in/A.java
new file mode 100644
index 0000000..180cd5e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test10/in/A.java
@@ -0,0 +1,13 @@
+package p;

+

+class A {

+	protected int j;

+	void a(){}

+}

+

+class B extends A {

+	protected void m() { 

+		super.j++;

+		super.j= 0;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test10/out/A.java
new file mode 100644
index 0000000..1e7bf5b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test10/out/A.java
@@ -0,0 +1,13 @@
+package p;

+

+class A {

+	protected int j;

+	void a(){}

+	protected void m() { 

+		this.j++;

+		this.j= 0;

+	}

+}

+

+class B extends A {

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test11/in/A.java
new file mode 100644
index 0000000..4a683ee
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test11/in/A.java
@@ -0,0 +1,15 @@
+package p;

+

+class A {

+	int x;

+}

+

+class B extends A {

+	protected void m() { 

+		class T extends A{

+			void t(){

+				super.x++;

+			}

+		};

+	}

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test11/out/A.java
new file mode 100644
index 0000000..f9e0fda
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test11/out/A.java
@@ -0,0 +1,16 @@
+package p;

+

+class A {

+	int x;

+

+	protected void m() { 

+		class T extends A{

+			void t(){

+				super.x++;

+			}

+		};

+	}

+}

+

+class B extends A {

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/in/A.java
new file mode 100644
index 0000000..065bec9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/in/A.java
@@ -0,0 +1,4 @@
+package p;

+class A{	

+	void x(){}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/in/B.java
new file mode 100644
index 0000000..4b081da
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/in/B.java
@@ -0,0 +1,6 @@
+package p;

+import java.io.IOException;

+class B extends A{

+	private void m() throws IOException{

+	}

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/out/A.java
new file mode 100644
index 0000000..80b2d1d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/out/A.java
@@ -0,0 +1,10 @@
+package p;

+

+import java.io.IOException;

+

+class A{	

+	void x(){}

+

+	private void m() throws IOException {

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/out/B.java
new file mode 100644
index 0000000..a6f1346
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test12/out/B.java
@@ -0,0 +1,3 @@
+package p;

+class B extends A{

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test13/in/A.java
new file mode 100644
index 0000000..ac22e50
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test13/in/A.java
@@ -0,0 +1,10 @@
+package p;

+

+class A {

+}

+

+class B extends A {

+	protected void m() { 

+		new B();

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test13/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test13/out/A.java
new file mode 100644
index 0000000..1b932df
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test13/out/A.java
@@ -0,0 +1,11 @@
+package p;

+

+class A {

+

+	protected void m() { 

+		new B();

+	}

+}

+

+class B extends A {

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test14/in/A.java
new file mode 100644
index 0000000..d98c9e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test14/in/A.java
@@ -0,0 +1,16 @@
+package p;

+

+import java.util.ArrayList;

+import java.util.List;

+

+public class A {

+void g(){

+	g();

+	}

+}

+class B extends A{

+	protected void m(){

+		List l= new ArrayList();

+		l.size();

+	}	

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test14/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test14/out/A.java
new file mode 100644
index 0000000..c10cb8a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test14/out/A.java
@@ -0,0 +1,17 @@
+package p;

+

+import java.util.ArrayList;

+import java.util.List;

+

+public class A {

+void g(){

+	g();

+	}

+

+protected void m() {

+	List l= new ArrayList();

+	l.size();

+}

+}

+class B extends A{	

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test15/in/A.java
new file mode 100644
index 0000000..9ddf60c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test15/in/A.java
@@ -0,0 +1,14 @@
+package p;

+

+import java.util.ArrayList;

+import java.util.List;

+

+public class A {

+}

+class B extends A{

+	public void f(){}

+	void m(){

+		B b= new B();

+		b.f();

+	}

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test15/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test15/out/A.java
new file mode 100644
index 0000000..82595fe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test15/out/A.java
@@ -0,0 +1,15 @@
+package p;

+

+import java.util.ArrayList;

+import java.util.List;

+

+public class A {

+	protected void m(){

+		B b= new B();

+		b.f();

+	}

+

+}

+class B extends A{

+	public void f(){}

+	}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test16/in/A.java
new file mode 100644
index 0000000..571eeed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test16/in/A.java
@@ -0,0 +1,14 @@
+package p;

+

+import java.util.ArrayList;

+import java.util.List;

+

+public class A {

+}

+class B extends A{

+	public int j= 0;

+	void m(){

+		B b= new B();

+		b.j= 0;

+	}

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test16/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test16/out/A.java
new file mode 100644
index 0000000..4807b3b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test16/out/A.java
@@ -0,0 +1,14 @@
+package p;

+

+import java.util.ArrayList;

+import java.util.List;

+

+public class A {

+	void m(){

+		B b= new B();

+		b.j= 0;

+	}

+}

+class B extends A{

+	public int j= 0;

+	}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test17/in/A.java
new file mode 100644
index 0000000..1f2875c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test17/in/A.java
@@ -0,0 +1,13 @@
+package p;

+

+class A {

+}

+

+class B extends A {

+	void m() { 

+		int i= B.ss();

+	}	

+	public static int ss() { 

+		return 9;

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test17/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test17/out/A.java
new file mode 100644
index 0000000..61cb3bd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test17/out/A.java
@@ -0,0 +1,12 @@
+package p;

+

+public class A {

+	protected void m() { 

+		int i= B.ss();

+	}	

+}

+class B extends A{

+	public static int ss() { 

+		return 9;

+	}

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test18/in/A.java
new file mode 100644
index 0000000..35bf67f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test18/in/A.java
@@ -0,0 +1,11 @@
+package p;

+

+class A {

+}

+

+class B extends A {

+	void m() { 

+		int i= B.ss;

+	}	

+	public static int ss= 8;

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

+

+public class A {

+	protected void m() { 

+		int i= B.ss;

+	}	

+}

+class B extends A{

+	public static int ss= 8;

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test19/in/A.java
new file mode 100644
index 0000000..85e4c69
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test19/in/A.java
@@ -0,0 +1,17 @@
+package p;
+
+class A {
+    void m() {
+        //implementation
+    }
+}
+
+class C extends A {
+}
+
+class B extends C {
+	void m() {
+		super.m();
+		//further implementation
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test19/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test19/out/A.java
new file mode 100644
index 0000000..8feb076
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test19/out/A.java
@@ -0,0 +1,18 @@
+package p;
+
+class A {
+    protected void m() {
+        //implementation
+    }
+}
+
+class C extends A {
+
+	void m() {
+		super.m();
+		//further implementation
+	}
+}
+
+class B extends C {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test2/in/A.java
new file mode 100644
index 0000000..7c09b1f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test2/in/A.java
@@ -0,0 +1,8 @@
+package p;

+class A{	

+	void x(){}

+}

+class B extends A{

+	protected void mmm(){}

+	protected void n(){}

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

+class A{	

+	void x(){}

+

+	protected void mmm() {}

+

+	protected void n() {}

+}

+class B extends A{

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test20/in/A.java
new file mode 100644
index 0000000..847cc24
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test20/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class A {
+}
+
+class C extends A {
+}
+
+class B extends C {
+	void m() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test20/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test20/out/A.java
new file mode 100644
index 0000000..2259d5f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test20/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A {
+
+	void m() {
+	}
+}
+
+class C extends A {
+}
+
+class B extends C {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test21/in/A.java
new file mode 100644
index 0000000..88d8f20
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test21/in/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A {
+}
+
+class C extends A {
+}
+
+class B extends C {
+	void m() {
+		super.toString();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test21/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test21/out/A.java
new file mode 100644
index 0000000..41cef98
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test21/out/A.java
@@ -0,0 +1,14 @@
+package p;
+
+class A {
+
+	void m() {
+		super.toString();
+	}
+}
+
+class C extends A {
+}
+
+class B extends C {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test22/in/A.java
new file mode 100644
index 0000000..f9a344d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test22/in/A.java
@@ -0,0 +1,17 @@
+package p;
+class SuperA{
+	public void m() {
+	}
+}
+class A extends SuperA{
+}
+class B extends A{
+	public void m(){
+	}
+}
+class B1 extends A{
+	public void foo(){
+		A a= null;
+		a.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test22/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test22/out/A.java
new file mode 100644
index 0000000..e88764d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test22/out/A.java
@@ -0,0 +1,18 @@
+package p;
+class SuperA{
+	public void m() {
+	}
+}
+class A extends SuperA{
+
+	public void m() {
+	}
+}
+class B extends A{
+}
+class B1 extends A{
+	public void foo(){
+		A a= null;
+		a.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test23/in/A.java
new file mode 100644
index 0000000..9c381e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test23/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class SuperA{
+	void x(){}
+}
+class A extends SuperA{
+}
+class B extends A {
+	public void m() { 
+		super.x();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test23/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test23/out/A.java
new file mode 100644
index 0000000..3636246
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test23/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class SuperA{
+	protected void x(){}
+}
+class A extends SuperA{
+
+	public void m() { 
+		super.x();
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test24/in/A.java
new file mode 100644
index 0000000..3682d51
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test24/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{	
+}
+class B extends A{
+	int[] m() throws java.lang.Exception, Throwable{
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test24/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test24/out/A.java
new file mode 100644
index 0000000..52640c0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test24/out/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+
+	int[] m() throws java.lang.Exception, Throwable {
+		return null;
+	}	
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test25/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test25/in/A.java
new file mode 100644
index 0000000..12e437e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test25/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{	
+}
+class B extends A{
+	int[] m()[] {
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test25/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test25/out/A.java
new file mode 100644
index 0000000..614171e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test25/out/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+
+	int[] m()[] {
+		return null;
+	}	
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test26/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test26/in/A.java
new file mode 100644
index 0000000..b53127f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test26/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+}
+class B extends A{
+	public int[] m()[] {
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test26/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test26/out/A.java
new file mode 100644
index 0000000..38da400
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test26/out/A.java
@@ -0,0 +1,11 @@
+package p;
+abstract class A{
+
+	public abstract int[] m()[];
+}
+class B extends A{
+	@Override
+	public int[] m()[] {
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test27/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test27/in/A.java
new file mode 100644
index 0000000..d63d4c1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test27/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class B extends A{
+	public int[] m() {
+		return new int[0];
+	}
+}
+class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test27/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test27/out/A.java
new file mode 100644
index 0000000..63d86eb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test27/out/A.java
@@ -0,0 +1,20 @@
+package p;
+abstract class A{
+
+	public abstract int[] m();
+}
+class B extends A{
+	@Override
+	public int[] m() {
+		return new int[0];
+	}
+}
+class C extends A{
+
+	/* (non-Javadoc)
+	 * @see p.A#m()
+	 */
+	public int[] m() {
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test28/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test28/in/A.java
new file mode 100644
index 0000000..c2f357f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test28/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+}
+class B extends A{
+	void m() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test28/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test28/out/A.java
new file mode 100644
index 0000000..6abe863
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test28/out/A.java
@@ -0,0 +1,10 @@
+package p;
+abstract class A{
+
+	protected abstract void m();
+}
+class B extends A{
+	@Override
+	protected void m() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test29/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test29/in/A.java
new file mode 100644
index 0000000..36aede0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test29/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class B extends A{
+	public boolean m(int[] a) throws Exception {
+		return true;
+	}
+}
+class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test29/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test29/out/A.java
new file mode 100644
index 0000000..a739949
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test29/out/A.java
@@ -0,0 +1,20 @@
+package p;
+abstract class A{
+
+	public abstract boolean m(int[] a) throws Exception;
+}
+class B extends A{
+	@Override
+	public boolean m(int[] a) throws Exception {
+		return true;
+	}
+}
+class C extends A{
+
+	/* (non-Javadoc)
+	 * @see p.A#m(int[])
+	 */
+	public boolean m(int[] a) throws Exception {
+		return false;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test3/in/A.java
new file mode 100644
index 0000000..6cce546
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test3/in/A.java
@@ -0,0 +1,12 @@
+package p;

+class A{	

+	void x(){}

+}

+class B extends A{

+	protected void mmm(){}

+	protected void n(){}

+}

+class C extends A{

+	protected void mmm(){}

+	protected void n(){}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test3/out/A.java
new file mode 100644
index 0000000..c960ade
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test3/out/A.java
@@ -0,0 +1,12 @@
+package p;

+class A{	

+	void x(){}

+

+	protected void mmm() {}

+

+	protected void n() {}

+}

+class B extends A{

+}

+class C extends A{

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test30/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test30/in/A.java
new file mode 100644
index 0000000..59349f7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test30/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class B extends A{
+	public boolean m(int[] a) throws Exception {
+		return true;
+	}
+}
+abstract class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test30/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test30/out/A.java
new file mode 100644
index 0000000..d7620ad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test30/out/A.java
@@ -0,0 +1,13 @@
+package p;
+abstract class A{
+
+	public abstract boolean m(int[] a) throws Exception;
+}
+class B extends A{
+	@Override
+	public boolean m(int[] a) throws Exception {
+		return true;
+	}
+}
+abstract class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test31/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test31/in/A.java
new file mode 100644
index 0000000..c46054b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test31/in/A.java
@@ -0,0 +1,18 @@
+package p;
+class A{
+}
+class B extends A{
+	public boolean m(int[] a) throws Exception {
+		return true;
+	}
+}
+class B1 extends B{
+}
+abstract class C extends A{
+}
+class D extends C{
+}
+class D1 extends C{
+}
+class E extends D{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test31/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test31/out/A.java
new file mode 100644
index 0000000..7ad6e42
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test31/out/A.java
@@ -0,0 +1,35 @@
+package p;
+abstract class A{
+
+	public abstract boolean m(int[] a) throws Exception;
+}
+class B extends A{
+	@Override
+	public boolean m(int[] a) throws Exception {
+		return true;
+	}
+}
+class B1 extends B{
+}
+abstract class C extends A{
+}
+class D extends C{
+
+	/* (non-Javadoc)
+	 * @see p.A#m(int[])
+	 */
+	public boolean m(int[] a) throws Exception {
+		return false;
+	}
+}
+class D1 extends C{
+
+	/* (non-Javadoc)
+	 * @see p.A#m(int[])
+	 */
+	public boolean m(int[] a) throws Exception {
+		return false;
+	}
+}
+class E extends D{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test32/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test32/in/A.java
new file mode 100644
index 0000000..06e63fb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test32/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class B extends A{
+	public int m() {
+		return 2 +3;
+	}
+}
+class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test32/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test32/out/A.java
new file mode 100644
index 0000000..a0a4845
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test32/out/A.java
@@ -0,0 +1,20 @@
+package p;
+abstract class A{
+
+	public abstract int m();
+}
+class B extends A{
+	@Override
+	public int m() {
+		return 2 +3;
+	}
+}
+class C extends A{
+
+	/* (non-Javadoc)
+	 * @see p.A#m()
+	 */
+	public int m() {
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test33/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test33/in/A.java
new file mode 100644
index 0000000..a395d92
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test33/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+}
+abstract class B extends A{
+	public abstract int m();
+}
+class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test33/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test33/out/A.java
new file mode 100644
index 0000000..3618cb7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test33/out/A.java
@@ -0,0 +1,16 @@
+package p;
+abstract class A{
+
+	public abstract int m();
+}
+abstract class B extends A{
+}
+class C extends A{
+
+	/* (non-Javadoc)
+	 * @see p.A#m()
+	 */
+	public int m() {
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test34/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test34/in/A.java
new file mode 100644
index 0000000..247219c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test34/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+}
+class B extends A{
+	B(){
+		super();
+	}
+	public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test34/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test34/out/A.java
new file mode 100644
index 0000000..2225704
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test34/out/A.java
@@ -0,0 +1,12 @@
+package p;
+abstract class A{
+
+	public abstract void m();
+}
+class B extends A{
+	B(){
+		super();
+	}
+	@Override
+	public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test35/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test35/in/A.java
new file mode 100644
index 0000000..1bc8be9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test35/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	A(int i){
+		this();
+	}
+	A(){}
+}
+class B extends A{
+	B(){
+		super();
+	}
+	public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test35/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test35/out/A.java
new file mode 100644
index 0000000..e272b58
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test35/out/A.java
@@ -0,0 +1,15 @@
+package p;
+abstract class A{
+	A(int i){
+		this();
+	}
+	A(){}
+	public abstract void m();
+}
+class B extends A{
+	B(){
+		super();
+	}
+	@Override
+	public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test36/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test36/in/A.java
new file mode 100644
index 0000000..a8009c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test36/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+}
+class B extends A{
+	public void m() {
+	}
+}
+class B1 extends A{
+	public void m() {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test36/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test36/out/A.java
new file mode 100644
index 0000000..9408a78
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test36/out/A.java
@@ -0,0 +1,14 @@
+package p;
+abstract class A{
+
+	public abstract void m();
+}
+class B extends A{
+	@Override
+	public void m() {
+	}
+}
+class B1 extends A{
+	public void m() {
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test37/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test37/in/A.java
new file mode 100644
index 0000000..1fdc08c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test37/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class B extends A{
+	public void m() {
+		f();
+	}
+	public void f(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test37/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test37/out/A.java
new file mode 100644
index 0000000..6283907
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test37/out/A.java
@@ -0,0 +1,14 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+
+	public void m() {
+		f();
+	}
+}
+class B extends A{
+	@Override
+	public void f(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test38/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test38/in/A.java
new file mode 100644
index 0000000..02ea52f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test38/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class B extends A{
+
+	public static final int A = 0;
+
+	public static void m() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test38/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test38/out/A.java
new file mode 100644
index 0000000..8845852
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test38/out/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+
+	public static final int A = 0;
+
+	public static void m() {
+	}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test39/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test39/in/A.java
new file mode 100644
index 0000000..933dbaf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test39/in/A.java
@@ -0,0 +1,16 @@
+package p;
+class A{
+}
+class B extends A{
+
+	public static final int A = 0;
+
+	public static void m() {
+	}
+
+	public static class X{
+	}
+
+	public static interface Y{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test39/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test39/out/A.java
new file mode 100644
index 0000000..ab200e7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test39/out/A.java
@@ -0,0 +1,16 @@
+package p;
+class A{
+
+	public static final int A = 0;
+
+	public static void m() {
+	}
+
+	public static class X{
+	}
+
+	public static interface Y{
+	}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/in/A.java
new file mode 100644
index 0000000..065bec9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/in/A.java
@@ -0,0 +1,4 @@
+package p;

+class A{	

+	void x(){}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/in/B.java
new file mode 100644
index 0000000..6d9a716
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/in/B.java
@@ -0,0 +1,5 @@
+package p;

+import java.util.List;

+class B extends A{

+	protected void m(List l){}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/out/A.java
new file mode 100644
index 0000000..440cdf4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/out/A.java
@@ -0,0 +1,9 @@
+package p;

+

+import java.util.List;

+

+class A{	

+	void x(){}

+

+	protected void m(List l) {}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/out/B.java
new file mode 100644
index 0000000..ce146be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test4/out/B.java
@@ -0,0 +1,3 @@
+package p;

+class B extends A{

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test40/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test40/in/A.java
new file mode 100644
index 0000000..396e97e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test40/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	public static void m() {
+	}
+}
+class B extends A{
+	public static void m() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test40/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test40/out/A.java
new file mode 100644
index 0000000..06d012a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test40/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	public static void m() {
+	}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test41/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test41/in/A.java
new file mode 100644
index 0000000..76a19ee
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test41/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+}
+class B extends A{
+	int i = 0, j = 1;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test41/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test41/out/A.java
new file mode 100644
index 0000000..b0177be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test41/out/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+
+	int i = 0;
+}
+class B extends A{
+	int j = 1;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test42/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test42/in/A.java
new file mode 100644
index 0000000..76a19ee
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test42/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+}
+class B extends A{
+	int i = 0, j = 1;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test42/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test42/out/A.java
new file mode 100644
index 0000000..a2870a9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test42/out/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+
+	int i = 0;
+	int j = 1;
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test43/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test43/in/A.java
new file mode 100644
index 0000000..501ca6f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test43/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+}
+class B extends A{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test43/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test43/out/A.java
new file mode 100644
index 0000000..bc542fc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test43/out/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+
+	/**
+	 * comment
+	 */
+	void f() {}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test44/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test44/in/A.java
new file mode 100644
index 0000000..e43379c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test44/in/A.java
@@ -0,0 +1,18 @@
+package p;
+class A{
+}
+class B extends A{
+
+	public static final int A = 0;
+
+	public static void m() {
+	}
+
+	public enum X{
+		TEST;
+		int f;
+	}
+
+	public static interface Y{
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test44/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test44/out/A.java
new file mode 100644
index 0000000..cc6027d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test44/out/A.java
@@ -0,0 +1,18 @@
+package p;
+class A{
+
+	public static final int A = 0;
+
+	public static void m() {
+	}
+
+	public enum X{
+		TEST;
+		int f;
+	}
+
+	public static interface Y{
+	}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test45/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test45/in/A.java
new file mode 100644
index 0000000..db1e41f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test45/in/A.java
@@ -0,0 +1,17 @@
+package p;
+class A{
+}
+class B extends A{
+
+	public static final int A = 0;
+
+	public static void m() {
+	}
+
+	public static class X{
+	}
+
+	public @interface Y{
+		String name() default "foo";
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test45/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test45/out/A.java
new file mode 100644
index 0000000..6e7e97d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test45/out/A.java
@@ -0,0 +1,17 @@
+package p;
+class A{
+
+	public static final int A = 0;
+
+	public static void m() {
+	}
+
+	public static class X{
+	}
+
+	public @interface Y{
+		String name() default "foo";
+	}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test46/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test46/in/A.java
new file mode 100644
index 0000000..073514d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test46/in/A.java
@@ -0,0 +1,11 @@
+package p;
+interface A{
+}
+class B implements A {
+
+	public static final int CONST = 0;
+
+	public int getConst() {
+		return CONST;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test46/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test46/out/A.java
new file mode 100644
index 0000000..773bc55
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test46/out/A.java
@@ -0,0 +1,13 @@
+package p;
+interface A{
+
+	public static final int CONST = 0;
+
+	public int getConst();
+}
+class B implements A {
+
+	public int getConst() {
+		return CONST;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test47/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test47/in/A.java
new file mode 100644
index 0000000..63dea0e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test47/in/A.java
@@ -0,0 +1,8 @@
+package p;
+public interface A {
+}
+class B implements A {
+	public final void method() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test47/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test47/out/A.java
new file mode 100644
index 0000000..68101e5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test47/out/A.java
@@ -0,0 +1,10 @@
+package p;
+public interface A {
+
+	public void method();
+}
+class B implements A {
+	public final void method() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test48/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test48/in/A.java
new file mode 100644
index 0000000..97915e5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test48/in/A.java
@@ -0,0 +1,8 @@
+package p;
+public class A {
+}
+class B extends A {
+	public final void method() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test48/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test48/out/A.java
new file mode 100644
index 0000000..55e10c1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test48/out/A.java
@@ -0,0 +1,12 @@
+package p;
+public class A {
+
+	public void method() {
+		
+	}
+}
+class B extends A {
+	public final void method() {
+		
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test49/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test49/in/A.java
new file mode 100644
index 0000000..bf6d963
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test49/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	void f(int a, int b)
+	{
+	}
+}
+class B extends A{
+	void g() {
+		super.f(1,2);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test49/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test49/out/A.java
new file mode 100644
index 0000000..4d96f36
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test49/out/A.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+	void f(int a, int b)
+	{
+	}
+
+	void g() {
+		this.f(1,2);
+	}
+}
+class B extends A{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/in/A.java
new file mode 100644
index 0000000..065bec9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/in/A.java
@@ -0,0 +1,4 @@
+package p;

+class A{	

+	void x(){}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/in/B.java
new file mode 100644
index 0000000..1124d96
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/in/B.java
@@ -0,0 +1,4 @@
+package p;

+class B extends A{

+	protected void m(){}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/out/A.java
new file mode 100644
index 0000000..c197fbd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/out/A.java
@@ -0,0 +1,6 @@
+package p;

+class A{	

+	void x(){}

+

+	protected void m() {}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/out/B.java
new file mode 100644
index 0000000..ce146be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test5/out/B.java
@@ -0,0 +1,3 @@
+package p;

+class B extends A{

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test6/in/A.java
new file mode 100644
index 0000000..4d88e03
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test6/in/A.java
@@ -0,0 +1,11 @@
+package p;

+

+class A {

+	int x;

+}

+

+class B extends A {

+	protected void m() { 

+		super.x++;

+	}

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test6/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test6/out/A.java
new file mode 100644
index 0000000..9d837d1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test6/out/A.java
@@ -0,0 +1,12 @@
+package p;

+

+class A {

+	int x;

+

+	protected void m() { 

+		this.x++;

+	}

+}

+

+class B extends A {

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test7/in/A.java
new file mode 100644
index 0000000..de2a82f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test7/in/A.java
@@ -0,0 +1,11 @@
+package p;

+

+class A {

+	void a(A a){}

+}

+

+class B extends A {

+	protected void m() { 

+		a(this);

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test7/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test7/out/A.java
new file mode 100644
index 0000000..31d68e8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test7/out/A.java
@@ -0,0 +1,12 @@
+package p;

+

+class A {

+	void a(A a){}

+

+	protected void m() { 

+		a(this);

+	}

+}

+

+class B extends A {

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test8/in/A.java
new file mode 100644
index 0000000..fde7237
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test8/in/A.java
@@ -0,0 +1,15 @@
+package p;

+

+class A {

+	int x;

+}

+

+class B extends A {

+	public void m() { 

+		new B(){

+			void f(){

+				super.x++;

+			}

+		};

+	}

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test8/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test8/out/A.java
new file mode 100644
index 0000000..b2275d8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test8/out/A.java
@@ -0,0 +1,16 @@
+package p;

+

+class A {

+	int x;

+

+	public void m() { 

+		new B(){

+			void f(){

+				super.x++;

+			}

+		};

+	}

+}

+

+class B extends A {

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test9/in/A.java
new file mode 100644
index 0000000..9d2963f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/test9/in/A.java
@@ -0,0 +1,12 @@
+package p;

+

+class A {

+	void a(){}

+}

+

+class B extends A {

+	public void m() { 

+		super.a();

+		super.a();

+	}

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

+

+class A {

+	void a(){}

+

+	public void m() { 

+		this.a();

+		this.a();

+	}

+}

+

+class B extends A {

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers0/in/A.java
new file mode 100644
index 0000000..b023e99
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers0/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{	
+	void x(){}
+}
+class B extends A{
+	protected void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers1/in/A.java
new file mode 100644
index 0000000..a120659
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers1/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{	
+	void x(){}
+}
+class B extends A{
+	protected void m(){ x();}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers10/in/A.java
new file mode 100644
index 0000000..6717c0a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers10/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{	
+}
+class B extends A{
+	public static int foo(){return 1;}
+	protected static int m=  foo();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers11/in/A.java
new file mode 100644
index 0000000..2039533
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers11/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{	
+}
+class B extends A{
+	public static int foo(){return 1;}
+	protected int m= foo();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers12/in/A.java
new file mode 100644
index 0000000..77a9a17
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers12/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{	
+}
+class B extends A{
+	public int foo(){return 1;}
+	protected int m(){ return foo();}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers2/in/A.java
new file mode 100644
index 0000000..80f72fb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers2/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{	
+	void x(){}
+}
+class B extends A{
+	void x(){}
+	protected void m(){ x();}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers3/in/A.java
new file mode 100644
index 0000000..2b77b08
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers3/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{	
+	void x(){}
+}
+class B extends A{
+	void y(){}
+	protected void m(){ y();}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers4/in/A.java
new file mode 100644
index 0000000..61ebcb9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers4/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{	
+	void x(){}
+}
+class B extends A{
+	void y(){m();}
+	protected void m(){ y();}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers5/in/A.java
new file mode 100644
index 0000000..d0e65ea
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers5/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{	
+	void x(){}
+}
+class B extends A{
+	int y= m();
+	protected int m(){ return 9;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers6/in/A.java
new file mode 100644
index 0000000..0a8008b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers6/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{	
+	void x(){}
+}
+class B extends A{
+	public int hashCode(){return 1;}
+	protected int m(){ return hashCode();}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers7/in/A.java
new file mode 100644
index 0000000..8e06ac7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers7/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{	
+}
+class B extends A{
+	public int foo(){return 1;}
+	protected static int m(){ return new B().foo();}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers8/in/A.java
new file mode 100644
index 0000000..c6abedb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers8/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{	
+}
+class B extends A{
+	public static int foo(){return 1;}
+	protected static int m(){ return foo();}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers9/in/A.java
new file mode 100644
index 0000000..fdd816d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testAddingRequiredMembers9/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{	
+}
+class B extends A{
+	public int foo(){return 1;}
+	protected static int m= new B().foo();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement0/in/A.java
new file mode 100644
index 0000000..501ca6f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement0/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+}
+class B extends A{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement1/in/A.java
new file mode 100644
index 0000000..5aa988a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement1/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+}
+class D extends A{
+	void f(){}
+}
+class B extends A{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement10/in/A.java
new file mode 100644
index 0000000..4071f37
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement10/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A<T>{
+}
+class Outer{
+	class B extends A<T>{
+		/**
+	 	* comment
+	 	*/
+		void f(){}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement11/in/A.java
new file mode 100644
index 0000000..ad34816
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement11/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A<T>{
+}
+class Outer{
+	class B extends A<String>{
+		/**
+	 	* comment
+	 	*/
+		void f(){}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement12/in/A.java
new file mode 100644
index 0000000..c665f75
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement12/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A<T>{
+}
+class Outer<S>{
+	class B extends A<S>{
+		/**
+	 	* comment
+	 	*/
+		void f(){}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement13/in/A.java
new file mode 100644
index 0000000..20dfefb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement13/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A<T>{
+}
+class D extends A<Object>{
+	void f(){}
+}
+class B extends A<String>{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement14/in/A.java
new file mode 100644
index 0000000..3825fd6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement14/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A<S>{
+}
+class D extends A<String{
+	void f(){}
+}
+class B<T> extends A<T>{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement15/in/A.java
new file mode 100644
index 0000000..d6a3a26
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement15/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+}
+class D<T> extends A{
+	void f(){}
+}
+class B<S> extends A{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement16/in/A.java
new file mode 100644
index 0000000..48d9ac7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement16/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A<? extends Object>{
+}
+class D<S> extends A<S>{
+	void f(){}
+}
+class B extends A<String>{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement17/in/A.java
new file mode 100644
index 0000000..88e60c6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement17/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A<S>{
+}
+class B<T> extends A<String>{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement18/in/A.java
new file mode 100644
index 0000000..53ac10f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement18/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+}
+class B<T> extends A{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement19/in/A.java
new file mode 100644
index 0000000..2b215d2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement19/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A<S>{
+}
+class B<S> extends A<S>{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement2/in/A.java
new file mode 100644
index 0000000..850e580
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement2/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+}
+class Outer{
+	class B extends A{
+		/**
+	 	* comment
+	 	*/
+		void f(){}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement20/in/A.java
new file mode 100644
index 0000000..7143ee7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement20/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A<S>{
+}
+class B<S,T> extends A<S>{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement21/in/A.java
new file mode 100644
index 0000000..8d72629
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement21/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A<S>{
+}
+class B<S,T> extends A<S>{
+	/**
+	 * comment
+	 */
+	void f(S s){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement22/in/A.java
new file mode 100644
index 0000000..38ae00d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement22/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A<S>{
+}
+class B<S,T> extends A<S>{
+	/**
+	 * comment
+	 */
+	void f(T t){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement23/in/A.java
new file mode 100644
index 0000000..b9ff2c5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement23/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A<S>{
+	S s;
+}
+class B<S,T> extends A<S>{
+	/**
+	 * comment
+	 */
+	S f(T t){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement24/in/A.java
new file mode 100644
index 0000000..c2355f8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement24/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A<S>{
+	S s;
+}
+class B<S,T> extends A<S>{
+	/**
+	 * comment
+	 */
+	String f(S s, T t){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement3/in/A.java
new file mode 100644
index 0000000..9474bd6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement3/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+}
+class B extends A{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement4/in/A.java
new file mode 100644
index 0000000..ee80865
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement4/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+}
+class B<T> extends A{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement5/in/A.java
new file mode 100644
index 0000000..e8ccc47
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement5/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+}
+class B<String> extends A{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement6/in/A.java
new file mode 100644
index 0000000..a3b300e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement6/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A<T>{
+}
+class B<T> extends A<T>{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement7/in/A.java
new file mode 100644
index 0000000..22da73b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement7/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A<T>{
+}
+class B extends A<String>{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement8/in/A.java
new file mode 100644
index 0000000..d2f4a55
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement8/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+}
+class Outer<T>{
+	class B<T> extends A{
+		/**
+	 	* comment
+	 	*/
+		void f(){}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement9/in/A.java
new file mode 100644
index 0000000..262ded8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testEnablement9/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A<T>{
+}
+class Outer<T>{
+	class B<T> extends A<T>{
+		/**
+	 	* comment
+	 	*/
+		void f(){}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail0/in/A.java
new file mode 100644
index 0000000..23fadf3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail0/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+	int x;
+}
+
+class B extends A{
+	int x;
+	void m() { x++; }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail1/in/A.java
new file mode 100644
index 0000000..b382d6f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail1/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class A {
+	void a(A a){}
+	void a(B b){}
+}
+
+class B extends A {
+	void m() { 
+		a(this);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail10/in/A.java
new file mode 100644
index 0000000..9e3b26c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail10/in/A.java
@@ -0,0 +1,8 @@
+package p;
+
+class B extends A {
+	private int a;
+	void m() { 
+		a++;
+	}	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail10/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail10/in/B.java
new file mode 100644
index 0000000..df913df
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail10/in/B.java
@@ -0,0 +1,8 @@
+package p;
+
+class B extends A {
+	int a;
+	void m() { 
+		a++;
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail11/in/A.java
new file mode 100644
index 0000000..8b7d8d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail11/in/A.java
@@ -0,0 +1,4 @@
+package p;
+
+class A {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail11/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail11/in/B.java
new file mode 100644
index 0000000..75a13a0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail11/in/B.java
@@ -0,0 +1,8 @@
+package p;
+
+class B extends A {
+	class P{};
+	void m() { 
+		P p= new P();
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail12/in/A.java
new file mode 100644
index 0000000..33bf30b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail12/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+class A {
+	void a(A a){}
+	void a(B b){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail12/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail12/in/B.java
new file mode 100644
index 0000000..9412a56
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail12/in/B.java
@@ -0,0 +1,7 @@
+package p;
+
+class B extends A {
+	void m() { 
+		a(this);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail13/in/A.java
new file mode 100644
index 0000000..9d6c2c9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail13/in/A.java
@@ -0,0 +1,13 @@
+package p;

+

+import java.util.ArrayList;

+import java.util.List;

+

+public class A {

+}

+class B extends A{

+	public void f(){}

+	void m(){

+		f();

+	}

+}

diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail14/in/A.java
new file mode 100644
index 0000000..bdee4cc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail14/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class Bar {
+}
+
+public class A extends Bar {
+	private static class Quux {}
+	public void m() {}
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail15/in/A.java
new file mode 100644
index 0000000..ec79222
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail15/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{}
+class C1 extends A{
+	public String toString(){
+		return null;
+	}
+}
+class B extends C1 {
+	public void m() {
+		super.toString();
+	}
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail16/in/A.java
new file mode 100644
index 0000000..1e822c9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail16/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{}
+class C1 extends A{
+	public void m() {
+	}
+}
+class B extends C1 {
+	public void m() {
+	}
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail17/in/A.java
new file mode 100644
index 0000000..dba9d49
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail17/in/A.java
@@ -0,0 +1,19 @@
+package p;
+class A{
+	public void m() {
+	}
+}
+class C2 extends A{
+}
+class C1 extends C2{
+}
+class B extends C1 {
+	public void m() {
+	}
+}
+class B1 extends C1{
+	public void foo() {
+		m();//if you move B.m() to C2 this will result in a different call
+	}
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail18/in/A.java
new file mode 100644
index 0000000..d33e6c5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail18/in/A.java
@@ -0,0 +1,16 @@
+package p;
+class SuperA{
+	public void m() {
+	}
+}
+class A extends SuperA{
+}
+class B extends A{
+	public void m(){
+	}
+}
+class B1 extends A{
+	public void foo(){
+		m();//if you move B.m() to A this will result in a different call
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail19/in/A.java
new file mode 100644
index 0000000..4e429c3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail19/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{}
+class C1 extends A{
+	public int a= 0;
+}
+class B extends C1 {
+	public void m() {
+		super.a = 1;
+	}
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail2/in/A.java
new file mode 100644
index 0000000..6a2f9f2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail2/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+}
+
+class B extends A {
+	void m() { 
+		a();
+	}
+	private void a(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail20/in/A.java
new file mode 100644
index 0000000..86c5955
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail20/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{}
+class B extends A{
+	public void m() {
+	}
+	void f(){
+		A a= new A();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail21/in/A.java
new file mode 100644
index 0000000..202a8c9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail21/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	A(){}
+}
+class B extends A{
+	public void m() {
+	}
+	void f(){
+		A a= new A();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail22/in/A.java
new file mode 100644
index 0000000..cc2bddd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail22/in/A.java
@@ -0,0 +1,14 @@
+package p;
+class A{
+	A(int i){}
+}
+class B extends A{
+	B(){
+		super(3);
+	}
+	public void m() {
+	}
+	void f(){
+		A a= new A(4);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail23/in/A.java
new file mode 100644
index 0000000..275728c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail23/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{}
+class B extends A{
+	public void m() {
+	}
+}
+class B1 extends A{
+	private void m() {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail24/in/A.java
new file mode 100644
index 0000000..da01190
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail24/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{}
+class B extends A{
+	public void m() {
+	}
+}
+class B1 extends A{
+	public int m() {
+		return 1;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail25/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail25/in/A.java
new file mode 100644
index 0000000..ca69911
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail25/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+public class A {
+	class Test{}
+}
+class B extends A{
+	public static class Test {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail26/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail26/in/A.java
new file mode 100644
index 0000000..6317af7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail26/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+class Test{
+	static class A {
+	}
+}
+class B extends Test.A{
+	public static class Test {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail27/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail27/in/A.java
new file mode 100644
index 0000000..2e0c50b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail27/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+	
+}
+class B extends A{
+	public static class A {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail28/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail28/in/A.java
new file mode 100644
index 0000000..5c99ac2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail28/in/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class Super{
+	static class A {
+	}
+}
+class B extends Super.A{
+	public static class Test {
+		static class X{
+			class Super{}
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail29/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail29/in/A.java
new file mode 100644
index 0000000..d0bd4a3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail29/in/A.java
@@ -0,0 +1,14 @@
+package p;
+
+public class A {
+	private int stop() {
+		return 2;
+	}
+}
+
+class B extends A {
+	public void stop() //<-- pull up this method
+	{
+		System.out.println("pulled up!");
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail3/in/A.java
new file mode 100644
index 0000000..fbcea3a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail3/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+}
+
+class B extends A {
+	private int a;
+	void m() { 
+		a++;
+	}	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail4/in/A.java
new file mode 100644
index 0000000..56e7c9f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail4/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+}
+
+class B extends A {
+	private class P{};
+	void m() { 
+		P p= new P();
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail5/in/A.java
new file mode 100644
index 0000000..aed7a46
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail5/in/A.java
@@ -0,0 +1,14 @@
+package p;
+
+class A {
+}
+
+class B extends A {
+	void m() { 
+	}	
+}
+
+class C extends A {
+	void m() { 
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail6/in/A.java
new file mode 100644
index 0000000..8b7d8d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail6/in/A.java
@@ -0,0 +1,4 @@
+package p;
+
+class A {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail6/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail6/in/B.java
new file mode 100644
index 0000000..658755a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail6/in/B.java
@@ -0,0 +1,8 @@
+package p;
+
+class B extends A {
+	void m() { 
+		a();
+	}
+	private void a(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail7/in/A.java
new file mode 100644
index 0000000..9e3b26c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail7/in/A.java
@@ -0,0 +1,8 @@
+package p;
+
+class B extends A {
+	private int a;
+	void m() { 
+		a++;
+	}	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail7/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail7/in/B.java
new file mode 100644
index 0000000..c9cedc1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail7/in/B.java
@@ -0,0 +1,8 @@
+package p;
+
+class B extends A {
+	private int a;
+	void m() { 
+		a++;
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail8/in/A.java
new file mode 100644
index 0000000..8b7d8d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail8/in/A.java
@@ -0,0 +1,4 @@
+package p;
+
+class A {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail8/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail8/in/B.java
new file mode 100644
index 0000000..f2f83c4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail8/in/B.java
@@ -0,0 +1,8 @@
+package p;
+
+class B extends A {
+	private class P{};
+	void m() { 
+		P p= new P();
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail9/in/A.java
new file mode 100644
index 0000000..8b7d8d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail9/in/A.java
@@ -0,0 +1,4 @@
+package p;
+
+class A {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail9/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail9/in/B.java
new file mode 100644
index 0000000..81440e6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFail9/in/B.java
@@ -0,0 +1,8 @@
+package p;
+
+class B extends A {
+	void m() { 
+		a();
+	}
+	void a(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFailTemplate/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFailTemplate/in/A.java
new file mode 100644
index 0000000..ff4381d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFailTemplate/in/A.java
@@ -0,0 +1 @@
+package p;
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testField0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testField0/in/A.java
new file mode 100644
index 0000000..e5ad4e2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testField0/in/A.java
@@ -0,0 +1,6 @@
+package p;

+class A{	

+}

+class B extends A{

+	int i;

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

+class A{

+

+	int i;	

+}

+class B extends A{

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldFail0/in/A.java
new file mode 100644
index 0000000..924c59a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldFail0/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+	int x;	
+}
+
+class B extends A{
+	int x;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldFail1/in/A.java
new file mode 100644
index 0000000..f3a8c65
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldFail1/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class A {
+}
+
+class B extends A{
+	int x;
+}
+class C extends A{
+	boolean x;
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldFail2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldFail2/in/A.java
new file mode 100644
index 0000000..b12c71d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldFail2/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{}
+class C1 extends A{
+	public int f= 0;
+}
+class B extends C1 {
+	public int f= 0;
+}
+
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod0/in/A.java
new file mode 100644
index 0000000..eb9e709
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod0/in/A.java
@@ -0,0 +1,11 @@
+package p;

+

+class A {

+}

+

+class B extends A {

+	void m() { 

+		int i= f;

+	}	

+	int f;

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod0/out/A.java
new file mode 100644
index 0000000..36cdc15
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testFieldMethod0/out/A.java
@@ -0,0 +1,13 @@
+package p;

+

+class A {

+

+	void m() { 

+		int i= f;

+	}

+

+	int f;

+}

+

+class B extends A {

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics0/in/A.java
new file mode 100644
index 0000000..ca4d126
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics0/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<T>{	
+}
+class B<T> extends A<T>{
+	void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics0/out/A.java
new file mode 100644
index 0000000..f919b42
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics0/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A<T>{
+
+	void m() {}	
+}
+class B<T> extends A<T>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics1/in/A.java
new file mode 100644
index 0000000..fe13921
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics1/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A<T>{	
+	void x(){}
+}
+class B<T> extends A<String>{
+	protected void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics1/out/A.java
new file mode 100644
index 0000000..c6cba72
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics1/out/A.java
@@ -0,0 +1,8 @@
+package p;
+class A<T>{	
+	void x(){}
+
+	protected void m() {}
+}
+class B<T> extends A<String>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics10/in/A.java
new file mode 100644
index 0000000..a1455f1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics10/in/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A<T> {
+	protected int j;
+	void a(T t){}
+}
+
+class B extends A<Object> {
+	protected void m() { 
+		super.j++;
+		super.j= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics10/out/A.java
new file mode 100644
index 0000000..388ae17
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics10/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A<T> {
+	protected int j;
+	void a(T t){}
+	protected void m() { 
+		this.j++;
+		this.j= 0;
+	}
+}
+
+class B extends A<Object> {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics11/in/A.java
new file mode 100644
index 0000000..c43248f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics11/in/A.java
@@ -0,0 +1,15 @@
+package p;
+
+class A<X> {
+	int x;
+}
+
+class B<X> extends A<X> {
+	protected void m() { 
+		class T<X> extends A<X>{
+			void t(){
+				super.x++;
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics11/out/A.java
new file mode 100644
index 0000000..2b03da6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics11/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+class A<X> {
+	int x;
+
+	protected void m() { 
+		class T<X> extends A<X>{
+			void t(){
+				super.x++;
+			}
+		};
+	}
+}
+
+class B<X> extends A<X> {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/in/A.java
new file mode 100644
index 0000000..51425a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A<T>{	
+	void x(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/in/B.java
new file mode 100644
index 0000000..edbe669
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/in/B.java
@@ -0,0 +1,6 @@
+package p;
+import java.io.IOException;
+class B<T> extends A<T>{
+	private void m(T t) throws IOException{
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/out/A.java
new file mode 100644
index 0000000..8820ddf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.io.IOException;
+
+class A<T>{	
+	void x(){}
+
+	private void m(T t) throws IOException {
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/out/B.java
new file mode 100644
index 0000000..595066c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics12/out/B.java
@@ -0,0 +1,3 @@
+package p;
+class B<T> extends A<T>{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics13/in/A.java
new file mode 100644
index 0000000..1b31b2d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics13/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+}
+
+class B extends A {
+	protected void m() { 
+		new B();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics13/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics13/out/A.java
new file mode 100644
index 0000000..d96b2fe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics13/out/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+
+	protected void m() { 
+		new B();
+	}
+}
+
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics14/in/A.java
new file mode 100644
index 0000000..bc2a597
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics14/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class A {
+void g(){
+	g();
+	}
+}
+class B extends A{
+	protected void m(){
+		List l= new ArrayList();
+		l.size();
+	}	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics14/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics14/out/A.java
new file mode 100644
index 0000000..03dd6fa
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics14/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class A {
+void g(){
+	g();
+	}
+
+protected void m() {
+	List l= new ArrayList();
+	l.size();
+}
+}
+class B extends A{	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics15/in/A.java
new file mode 100644
index 0000000..85e4c69
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics15/in/A.java
@@ -0,0 +1,17 @@
+package p;
+
+class A {
+    void m() {
+        //implementation
+    }
+}
+
+class C extends A {
+}
+
+class B extends C {
+	void m() {
+		super.m();
+		//further implementation
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics15/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics15/out/A.java
new file mode 100644
index 0000000..8feb076
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics15/out/A.java
@@ -0,0 +1,18 @@
+package p;
+
+class A {
+    protected void m() {
+        //implementation
+    }
+}
+
+class C extends A {
+
+	void m() {
+		super.m();
+		//further implementation
+	}
+}
+
+class B extends C {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics2/in/A.java
new file mode 100644
index 0000000..c29baee
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics2/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A<S>{	
+	void x(){}
+}
+class B<T> extends A<T>{
+	protected void mmm(T t){}
+	protected void n(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics2/out/A.java
new file mode 100644
index 0000000..e2d6c3d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics2/out/A.java
@@ -0,0 +1,10 @@
+package p;
+class A<S>{	
+	void x(){}
+
+	protected void mmm(S t) {}
+
+	protected void n() {}
+}
+class B<T> extends A<T>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics3/in/A.java
new file mode 100644
index 0000000..44124de
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics3/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A<X>{	
+	void x(){}
+}
+class B<T> extends A<T>{
+	protected void mmm(T t){}
+	protected void n(){}
+}
+class C<S> extends A<S>{
+	protected void mmm(S s){}
+	protected void n(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics3/out/A.java
new file mode 100644
index 0000000..20a77f5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics3/out/A.java
@@ -0,0 +1,13 @@
+package p;
+class A<X>{	
+	void x(){}
+
+	protected void mmm(X t) {}
+
+	protected void n() {}
+}
+class B<T> extends A<T>{
+}
+class C<S> extends A<S>{
+	protected void mmm(S s){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/in/A.java
new file mode 100644
index 0000000..51425a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A<T>{	
+	void x(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/in/B.java
new file mode 100644
index 0000000..57b998b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/in/B.java
@@ -0,0 +1,5 @@
+package p;
+import java.util.List;
+class B<T> extends A<T>{
+	protected void m(List<T> l){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/out/A.java
new file mode 100644
index 0000000..3f8b7d8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/out/A.java
@@ -0,0 +1,7 @@
+package p;
+import java.util.List;
+class A<T>{	
+	void x(){}
+
+	protected void m(List<T> l) {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/out/B.java
new file mode 100644
index 0000000..2173b6c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics4/out/B.java
@@ -0,0 +1,3 @@
+package p;
+class B<T> extends A<T>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/in/A.java
new file mode 100644
index 0000000..6181dfd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A<T>{	
+	void x(T t){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/in/B.java
new file mode 100644
index 0000000..eef29da
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/in/B.java
@@ -0,0 +1,4 @@
+package p;
+class B<S> extends A<S>{
+	protected void m(S s){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/out/A.java
new file mode 100644
index 0000000..94d82a8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/out/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<T>{	
+	void x(T t){}
+
+	protected void m(T s) {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/out/B.java
new file mode 100644
index 0000000..15b4326
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics5/out/B.java
@@ -0,0 +1,3 @@
+package p;
+class B<S> extends A<S>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics6/in/A.java
new file mode 100644
index 0000000..4a1149d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics6/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A<S> {
+	int x;
+}
+
+class B<T> extends A<String> {
+	protected void m() { 
+		super.x++;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics6/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics6/out/A.java
new file mode 100644
index 0000000..4ebadeb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics6/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class A<S> {
+	int x;
+
+	protected void m() { 
+		this.x++;
+	}
+}
+
+class B<T> extends A<String> {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics7/in/A.java
new file mode 100644
index 0000000..d5511ac
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics7/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A<T> {
+	void a(A<T> a){}
+}
+
+class B<T> extends A<T> {
+	protected void m() { 
+		a(this);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics7/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics7/out/A.java
new file mode 100644
index 0000000..9d6f744
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics7/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class A<T> {
+	void a(A<T> a){}
+
+	protected void m() { 
+		a(this);
+	}
+}
+
+class B<T> extends A<T> {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics8/in/A.java
new file mode 100644
index 0000000..a8bedec
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics8/in/A.java
@@ -0,0 +1,15 @@
+package p;
+
+class A {
+	int x;
+}
+
+class B<T> extends A {
+	public void m() { 
+		new B<String>(){
+			void f(){
+				super.x++;
+			}
+		};
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics8/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics8/out/A.java
new file mode 100644
index 0000000..935737e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics8/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+class A {
+	int x;
+
+	public void m() { 
+		new B<String>(){
+			void f(){
+				super.x++;
+			}
+		};
+	}
+}
+
+class B<T> extends A {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics9/in/A.java
new file mode 100644
index 0000000..e43c71c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics9/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class A<T> {
+	void a(T t){}
+}
+
+class B extends A<String> {
+	public void m() { 
+		super.a(null);
+		super.a(new String());
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics9/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics9/out/A.java
new file mode 100644
index 0000000..87c4ba5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenerics9/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A<T> {
+	void a(T t){}
+
+	public void m() { 
+		this.a(null);
+		this.a(new String());
+	}
+}
+
+class B extends A<String> {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenericsFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenericsFail0/in/A.java
new file mode 100644
index 0000000..40c186c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenericsFail0/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+
+}
+
+class B<T> extends A{
+	void m(T t) {}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenericsFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenericsFail1/in/A.java
new file mode 100644
index 0000000..5a3acc8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenericsFail1/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A<S> {
+}
+
+class B<T,S> extends A<T> {
+	void m(S s) { 
+		a();
+	}
+	private void a(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenericsFail2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenericsFail2/in/A.java
new file mode 100644
index 0000000..bde2dbd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testGenericsFail2/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A<S> {
+}
+
+class B<T,S> extends A<String> {
+	void m(T t) { 
+		a();
+	}
+	private void a(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/in/A.java
new file mode 100644
index 0000000..6181dfd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A<T>{	
+	void x(T t){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/in/B.java
new file mode 100644
index 0000000..0c04260
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/in/B.java
@@ -0,0 +1,5 @@
+package p;
+import static java.lang.Math.E;
+class B<S> extends A<S>{
+	protected void m(S s){double e= E;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/out/A.java
new file mode 100644
index 0000000..c1e5381
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/out/A.java
@@ -0,0 +1,9 @@
+package p;
+
+import static java.lang.Math.E;
+
+class A<T>{	
+	void x(T t){}
+
+	protected void m(T s) {double e= E;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/out/B.java
new file mode 100644
index 0000000..15b4326
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports0/out/B.java
@@ -0,0 +1,3 @@
+package p;
+class B<S> extends A<S>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/in/A.java
new file mode 100644
index 0000000..6181dfd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/in/A.java
@@ -0,0 +1,4 @@
+package p;
+class A<T>{	
+	void x(T t){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/in/B.java
new file mode 100644
index 0000000..df955c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/in/B.java
@@ -0,0 +1,5 @@
+package p;
+import static java.lang.Math.cos;
+class B<S> extends A<S>{
+	protected void m(S s){double d= cos(0);}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/out/A.java
new file mode 100644
index 0000000..990f004
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/out/A.java
@@ -0,0 +1,9 @@
+package p;
+
+import static java.lang.Math.cos;
+
+class A<T>{	
+	void x(T t){}
+
+	protected void m(T s) {double d= cos(0);}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/out/B.java
new file mode 100644
index 0000000..15b4326
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testStaticImports1/out/B.java
@@ -0,0 +1,3 @@
+package p;
+class B<S> extends A<S>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testTemplate/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testTemplate/in/A.java
new file mode 100644
index 0000000..b23b2d9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testTemplate/in/A.java
@@ -0,0 +1 @@
+package p;
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testTemplate/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testTemplate/out/A.java
new file mode 100644
index 0000000..b23b2d9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PullUp/testTemplate/out/A.java
@@ -0,0 +1 @@
+package p;
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test0/in/A.java
new file mode 100644
index 0000000..05b3f05
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test0/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	public void m() {}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test0/out/A.java
new file mode 100644
index 0000000..5d01caf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test0/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+}
+class B extends A{
+
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test1/in/A.java
new file mode 100644
index 0000000..05b3f05
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test1/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A{
+	public void m() {}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test1/out/A.java
new file mode 100644
index 0000000..7a2476f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test1/out/A.java
@@ -0,0 +1,9 @@
+package p;
+abstract class A{
+	public abstract void m();
+}
+class B extends A{
+
+	@Override
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test10/in/A.java
new file mode 100644
index 0000000..c8b51b0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test10/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
+class B extends A{
+}
+class B1 extends B{
+}
+class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test10/out/A.java
new file mode 100644
index 0000000..3c27d67
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test10/out/A.java
@@ -0,0 +1,19 @@
+package p;
+class A{
+}
+class B extends A{
+
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
+class B1 extends B{
+}
+class C extends A{
+
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test11/in/A.java
new file mode 100644
index 0000000..d925575
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test11/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test11/out/A.java
new file mode 100644
index 0000000..3da2ea6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test11/out/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+}
+class B extends A{
+
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test12/in/A.java
new file mode 100644
index 0000000..c3443c1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test12/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+
+	public int f;
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test12/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test12/out/A.java
new file mode 100644
index 0000000..39e2fc7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test12/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+}
+class B extends A{
+
+	public int f;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test13/in/A.java
new file mode 100644
index 0000000..6835bf8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test13/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+
+	public int f, g;
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test13/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test13/out/A.java
new file mode 100644
index 0000000..ea77920
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test13/out/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+
+	public int g;
+}
+class B extends A{
+
+	public int f;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test14/in/A.java
new file mode 100644
index 0000000..ae28b6d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test14/in/A.java
@@ -0,0 +1,7 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+}
+abstract class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test14/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test14/out/A.java
new file mode 100644
index 0000000..8c4eb4b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test14/out/A.java
@@ -0,0 +1,9 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+}
+abstract class B extends A{
+
+	public abstract void f();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test15/in/A.java
new file mode 100644
index 0000000..ae28b6d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test15/in/A.java
@@ -0,0 +1,7 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+}
+abstract class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test15/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test15/out/A.java
new file mode 100644
index 0000000..67bf01a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test15/out/A.java
@@ -0,0 +1,7 @@
+package p;
+abstract class A{
+}
+abstract class B extends A{
+
+	public abstract void f();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test16/in/A.java
new file mode 100644
index 0000000..4dc0f8c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test16/in/A.java
@@ -0,0 +1,10 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+}
+abstract class B extends A{
+}
+class C extends A{
+	public void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test16/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test16/out/A.java
new file mode 100644
index 0000000..90077a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test16/out/A.java
@@ -0,0 +1,10 @@
+package p;
+abstract class A{
+}
+abstract class B extends A{
+
+	public abstract void f();
+}
+class C extends A{
+	public void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test17/in/A.java
new file mode 100644
index 0000000..4dc0f8c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test17/in/A.java
@@ -0,0 +1,10 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+}
+abstract class B extends A{
+}
+class C extends A{
+	public void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test17/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test17/out/A.java
new file mode 100644
index 0000000..38de40e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test17/out/A.java
@@ -0,0 +1,12 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+}
+abstract class B extends A{
+
+	public abstract void f();
+}
+class C extends A{
+	public void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test18/in/A.java
new file mode 100644
index 0000000..8efa469
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test18/in/A.java
@@ -0,0 +1,12 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+
+	public void m() {}
+}
+abstract class B extends A{
+}
+class C extends A{
+	public void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test18/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test18/out/A.java
new file mode 100644
index 0000000..99bd6ad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test18/out/A.java
@@ -0,0 +1,14 @@
+package p;
+abstract class A{
+}
+abstract class B extends A{
+
+	public void m() {}
+
+	public abstract void f();
+}
+class C extends A{
+	public void f(){}
+
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test19/in/A.java
new file mode 100644
index 0000000..8efa469
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test19/in/A.java
@@ -0,0 +1,12 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+
+	public void m() {}
+}
+abstract class B extends A{
+}
+class C extends A{
+	public void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test19/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test19/out/A.java
new file mode 100644
index 0000000..e5d46e3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test19/out/A.java
@@ -0,0 +1,20 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+
+	public abstract void m();
+}
+abstract class B extends A{
+
+	@Override
+	public void m() {}
+
+	public abstract void f();
+}
+class C extends A{
+	public void f(){}
+
+	@Override
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test2/in/A.java
new file mode 100644
index 0000000..993b40b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test2/in/A.java
@@ -0,0 +1,6 @@
+package p;
+abstract class A{
+	public abstract void m();
+}
+abstract class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test2/out/A.java
new file mode 100644
index 0000000..b925b30
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test2/out/A.java
@@ -0,0 +1,7 @@
+package p;
+abstract class A{
+}
+abstract class B extends A{
+
+	public abstract void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/in/A.java
new file mode 100644
index 0000000..07fe39f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/in/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+class A{
+
+	public Collection i;	
+
+	public List f(){ 
+		return null;
+	}
+
+	public Set m(){
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/in/B.java
new file mode 100644
index 0000000..f6e6d24
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/in/B.java
@@ -0,0 +1,4 @@
+package p;
+
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/out/A.java
new file mode 100644
index 0000000..ae45c12
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/out/A.java
@@ -0,0 +1,8 @@
+package p;
+
+import java.util.Set;
+
+abstract class A{
+
+	public abstract Set m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/out/B.java
new file mode 100644
index 0000000..5bb00d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test20/out/B.java
@@ -0,0 +1,19 @@
+package p;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+class B extends A{
+
+	public Collection i;
+
+	public List f() { 
+		return null;
+	}
+
+	@Override
+	public Set m() {
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/in/A.java
new file mode 100644
index 0000000..4b9e68b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+abstract class A{
+
+	public Collection i;
+
+	public List f() {
+		return null;
+	}
+
+	public abstract Set m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/in/B.java
new file mode 100644
index 0000000..1eaac0b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/in/B.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.util.Set;
+
+class B extends A{
+
+	public Set m() {
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/in/C.java
new file mode 100644
index 0000000..e3310af
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/in/C.java
@@ -0,0 +1,4 @@
+package p;
+
+abstract class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/out/A.java
new file mode 100644
index 0000000..e7378d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/out/A.java
@@ -0,0 +1,5 @@
+package p;
+
+
+abstract class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/out/B.java
new file mode 100644
index 0000000..1d7bb00
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/out/B.java
@@ -0,0 +1,18 @@
+package p;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+class B extends A{
+
+	public Collection i;
+
+	public Set m() {
+		return null;
+	}
+
+	public List f() {
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/out/C.java
new file mode 100644
index 0000000..dfd0787
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test21/out/C.java
@@ -0,0 +1,16 @@
+package p;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+abstract class C extends A{
+
+	public Collection i;
+
+	public List f() {
+		return null;
+	}
+
+	public abstract Set m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test22/in/A.java
new file mode 100644
index 0000000..864f6c5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test22/in/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A {
+
+	private int bar;
+}
+class B extends A {
+
+	private int x;
+
+	public void fred(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test22/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test22/out/A.java
new file mode 100644
index 0000000..071dddd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test22/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class A {
+}
+class B extends A {
+
+	private int x;
+	private int bar;
+
+	public void fred(){
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test23/in/A.java
new file mode 100644
index 0000000..68e58be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test23/in/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A {
+
+	private int bar;
+}
+class B extends A {
+
+	public void fred(){
+	}
+
+	private int x;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test23/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test23/out/A.java
new file mode 100644
index 0000000..c78a2d2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test23/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class A {
+}
+class B extends A {
+
+	public void fred(){
+	}
+
+	private int x;
+	private int bar;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test24/in/A.java
new file mode 100644
index 0000000..f6255cb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test24/in/A.java
@@ -0,0 +1,15 @@
+package p;
+
+class A {
+	
+	private int foo;
+	
+	private int bar;
+}
+class B extends A {
+	
+	public void fred(){
+	}
+	
+	private int x;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test24/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test24/out/A.java
new file mode 100644
index 0000000..e4b5794
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test24/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A {
+}
+class B extends A {
+	
+	public void fred(){
+	}
+	
+	private int x;
+	private int foo;
+	private int bar;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test25/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test25/in/A.java
new file mode 100644
index 0000000..5566cc1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test25/in/A.java
@@ -0,0 +1,14 @@
+package p;
+
+class A {
+	
+	private int bar() {
+		return foo();
+	}
+
+	public int foo() {
+		return 2;
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test25/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test25/out/A.java
new file mode 100644
index 0000000..41a9fd7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test25/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+abstract class A {
+	
+	private int bar() {
+		return foo();
+	}
+
+	public abstract int foo();
+}
+class B extends A {
+
+	@Override
+	public int foo() {
+		return 2;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test26/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test26/in/A.java
new file mode 100644
index 0000000..ce7139f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test26/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class A {
+
+	public int bar() {
+		return 1;
+	}
+}
+class B extends A {
+
+	int fred;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test26/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test26/out/A.java
new file mode 100644
index 0000000..13b2870
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test26/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class A {
+}
+class B extends A {
+
+	int fred;
+
+	public int bar() {
+		return 1;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test27/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test27/in/A.java
new file mode 100644
index 0000000..4a05aa4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test27/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+class A {
+
+	public int bar() {
+		return 1;
+	}
+}
+class B extends A {
+
+	public int foo() {
+		return 1;
+	}
+
+	int fred;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test27/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test27/out/A.java
new file mode 100644
index 0000000..0f2c9e8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test27/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+class A {
+}
+class B extends A {
+
+	public int foo() {
+		return 1;
+	}
+
+	public int bar() {
+		return 1;
+	}
+
+	int fred;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test28/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test28/in/A.java
new file mode 100644
index 0000000..82126d6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test28/in/A.java
@@ -0,0 +1,7 @@
+package p;
+
+class A {
+	int i= 0, j= 1;
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test28/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test28/out/A.java
new file mode 100644
index 0000000..995dd10
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test28/out/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class A {
+}
+class B extends A {
+
+	int i = 0;
+	int j = 1;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test29/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test29/in/A.java
new file mode 100644
index 0000000..6285d4d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test29/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+class A {
+	private TEST bar() {
+		return foo();
+	}
+
+	public TEST foo() {
+		return TEST.CHECK;
+	}
+}
+class B extends A {
+}
+enum TEST {
+	CHECK;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test29/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test29/out/A.java
new file mode 100644
index 0000000..db8fce9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test29/out/A.java
@@ -0,0 +1,19 @@
+package p;
+
+abstract class A {
+	private TEST bar() {
+		return foo();
+	}
+
+	public abstract TEST foo();
+}
+class B extends A {
+
+	@Override
+	public TEST foo() {
+		return TEST.CHECK;
+	}
+}
+enum TEST {
+	CHECK;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test3/in/A.java
new file mode 100644
index 0000000..d21beda
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test3/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	public void m() {}
+}
+class B extends A{
+}
+class B1 extends B{
+}
+class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test3/out/A.java
new file mode 100644
index 0000000..3e436c7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test3/out/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+}
+class B extends A{
+
+	public void m() {}
+}
+class B1 extends B{
+}
+class C extends A{
+
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test30/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test30/in/A.java
new file mode 100644
index 0000000..818ac78
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test30/in/A.java
@@ -0,0 +1,18 @@
+package p;
+
+class A {
+	public @interface Annotation {
+		String name() default "foo";
+	}
+	private int bar() {
+		return foo();
+	}
+	@Annotation (
+		name= "bar"
+	)
+	public int foo() {
+		return 2;
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test30/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test30/out/A.java
new file mode 100644
index 0000000..695fcd7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test30/out/A.java
@@ -0,0 +1,22 @@
+package p;
+
+abstract class A {
+	public @interface Annotation {
+		String name() default "foo";
+	}
+	private int bar() {
+		return foo();
+	}
+	@Annotation (
+		name= "bar"
+	)
+	public abstract int foo();
+}
+class B extends A {
+
+	@Annotation(name = "bar")
+	@Override
+	public int foo() {
+		return 2;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test31/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test31/in/A.java
new file mode 100644
index 0000000..3d2a21d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test31/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+class A {
+	public enum TEST {
+		CHECK;
+	}
+	private int bar() {
+		return foo();
+	}
+
+	public int foo() {
+		return 2;
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test31/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test31/out/A.java
new file mode 100644
index 0000000..5bb7863
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test31/out/A.java
@@ -0,0 +1,19 @@
+package p;
+
+abstract class A {
+	public enum TEST {
+		CHECK;
+	}
+	private int bar() {
+		return foo();
+	}
+
+	public abstract int foo();
+}
+class B extends A {
+
+	@Override
+	public int foo() {
+		return 2;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test32/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test32/in/A.java
new file mode 100644
index 0000000..cc46f6c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test32/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+class A {
+	@interface Annotation {
+		String name();
+	}
+	private int bar() {
+		return foo();
+	}
+
+	public int foo() {
+		return 2;
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test32/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test32/out/A.java
new file mode 100644
index 0000000..b91b237
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test32/out/A.java
@@ -0,0 +1,19 @@
+package p;
+
+abstract class A {
+	@interface Annotation {
+		String name();
+	}
+	private int bar() {
+		return foo();
+	}
+
+	public abstract int foo();
+}
+class B extends A {
+
+	@Override
+	public int foo() {
+		return 2;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/in/A.java
new file mode 100644
index 0000000..8182a59
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/in/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import static java.lang.Math.PI;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+abstract class A{
+
+	public Collection i;
+
+	public List f() {
+		double d= PI;
+		return null;
+	}
+
+	public abstract Set m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/in/B.java
new file mode 100644
index 0000000..1eaac0b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/in/B.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.util.Set;
+
+class B extends A{
+
+	public Set m() {
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/in/C.java
new file mode 100644
index 0000000..e3310af
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/in/C.java
@@ -0,0 +1,4 @@
+package p;
+
+abstract class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/out/A.java
new file mode 100644
index 0000000..e7378d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/out/A.java
@@ -0,0 +1,5 @@
+package p;
+
+
+abstract class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/out/B.java
new file mode 100644
index 0000000..2b3bbd0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/out/B.java
@@ -0,0 +1,21 @@
+package p;
+
+import static java.lang.Math.PI;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+class B extends A{
+
+	public Collection i;
+
+	public Set m() {
+		return null;
+	}
+
+	public List f() {
+		double d= PI;
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/out/C.java
new file mode 100644
index 0000000..77c9244
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test33/out/C.java
@@ -0,0 +1,19 @@
+package p;
+
+import static java.lang.Math.PI;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+abstract class C extends A{
+
+	public Collection i;
+
+	public List f() {
+		double d= PI;
+		return null;
+	}
+
+	public abstract Set m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/in/A.java
new file mode 100644
index 0000000..5ab622f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/in/A.java
@@ -0,0 +1,18 @@
+package p;
+
+import static java.lang.Math.cos;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+abstract class A{
+
+	public Collection i;
+
+	public List f() {
+		double d= cos(0);
+		return null;
+	}
+
+	public abstract Set m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/in/B.java
new file mode 100644
index 0000000..1eaac0b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/in/B.java
@@ -0,0 +1,10 @@
+package p;
+
+import java.util.Set;
+
+class B extends A{
+
+	public Set m() {
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/in/C.java
new file mode 100644
index 0000000..e3310af
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/in/C.java
@@ -0,0 +1,4 @@
+package p;
+
+abstract class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/out/A.java
new file mode 100644
index 0000000..e7378d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/out/A.java
@@ -0,0 +1,5 @@
+package p;
+
+
+abstract class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/out/B.java
new file mode 100644
index 0000000..85858d7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/out/B.java
@@ -0,0 +1,20 @@
+package p;
+
+import static java.lang.Math.cos;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+class B extends A{
+
+	public Collection i;
+
+	public Set m() {
+		return null;
+	}
+
+	public List f() {
+		double d= cos(0);
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/out/C.java
new file mode 100644
index 0000000..6697ed5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test34/out/C.java
@@ -0,0 +1,18 @@
+package p;
+
+import static java.lang.Math.cos;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+abstract class C extends A{
+
+	public Collection i;
+
+	public List f() {
+		double d= cos(0);
+		return null;
+	}
+
+	public abstract Set m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test4/in/A.java
new file mode 100644
index 0000000..d21beda
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test4/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	public void m() {}
+}
+class B extends A{
+}
+class B1 extends B{
+}
+class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test4/out/A.java
new file mode 100644
index 0000000..a2cfe91
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test4/out/A.java
@@ -0,0 +1,16 @@
+package p;
+abstract class A{
+	public abstract void m();
+}
+class B extends A{
+
+	@Override
+	public void m() {}
+}
+class B1 extends B{
+}
+class C extends A{
+
+	@Override
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test5/in/A.java
new file mode 100644
index 0000000..aafdd48
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test5/in/A.java
@@ -0,0 +1,10 @@
+package p;
+abstract class A{
+	public abstract void m();
+}
+abstract class B extends A{
+}
+abstract class B1 extends B{
+}
+abstract class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test5/out/A.java
new file mode 100644
index 0000000..5cf62cb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test5/out/A.java
@@ -0,0 +1,13 @@
+package p;
+abstract class A{
+}
+abstract class B extends A{
+
+	public abstract void m();
+}
+abstract class B1 extends B{
+}
+abstract class C extends A{
+
+	public abstract void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test6/in/A.java
new file mode 100644
index 0000000..993b40b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test6/in/A.java
@@ -0,0 +1,6 @@
+package p;
+abstract class A{
+	public abstract void m();
+}
+abstract class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test6/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test6/out/A.java
new file mode 100644
index 0000000..b46a7c2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test6/out/A.java
@@ -0,0 +1,8 @@
+package p;
+abstract class A{
+	public abstract void m();
+}
+abstract class B extends A{
+
+	public abstract void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test7/in/A.java
new file mode 100644
index 0000000..aafdd48
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test7/in/A.java
@@ -0,0 +1,10 @@
+package p;
+abstract class A{
+	public abstract void m();
+}
+abstract class B extends A{
+}
+abstract class B1 extends B{
+}
+abstract class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test7/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test7/out/A.java
new file mode 100644
index 0000000..bea3686
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test7/out/A.java
@@ -0,0 +1,14 @@
+package p;
+abstract class A{
+	public abstract void m();
+}
+abstract class B extends A{
+
+	public abstract void m();
+}
+abstract class B1 extends B{
+}
+abstract class C extends A{
+
+	public abstract void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test8/in/A.java
new file mode 100644
index 0000000..d925575
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test8/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test8/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test8/out/A.java
new file mode 100644
index 0000000..4080b25
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test8/out/A.java
@@ -0,0 +1,12 @@
+package p;
+abstract class A{
+	/**
+	 * comment
+	 */
+	public abstract void m();
+}
+class B extends A{
+
+	@Override
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test9/in/A.java
new file mode 100644
index 0000000..c8b51b0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test9/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
+class B extends A{
+}
+class B1 extends B{
+}
+class C extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test9/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test9/out/A.java
new file mode 100644
index 0000000..df029c3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/test9/out/A.java
@@ -0,0 +1,19 @@
+package p;
+abstract class A{
+	/**
+	 * comment
+	 */
+	public abstract void m();
+}
+class B extends A{
+
+	@Override
+	public void m() {}
+}
+class B1 extends B{
+}
+class C extends A{
+
+	@Override
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers0/in/A.java
new file mode 100644
index 0000000..d2768ad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers0/in/A.java
@@ -0,0 +1,7 @@
+//nothing added to m
+package p;
+class A{	
+	protected void m(){}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers1/in/A.java
new file mode 100644
index 0000000..4e4cdca
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers1/in/A.java
@@ -0,0 +1,10 @@
+//nothing added to m
+package p;
+class A{	
+	protected void m(){
+		f();
+	}
+	public void f(){}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers2/in/A.java
new file mode 100644
index 0000000..ea76392
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers2/in/A.java
@@ -0,0 +1,10 @@
+//nothing added to m
+package p;
+class A{	
+	protected void m(){
+		f();
+	}
+	public static void f(){}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers3/in/A.java
new file mode 100644
index 0000000..8134178
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers3/in/A.java
@@ -0,0 +1,10 @@
+//f added to m
+package p;
+class A{	
+	protected void m(){
+		f();
+	}
+	private void f(){}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers4/in/A.java
new file mode 100644
index 0000000..fff2111
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers4/in/A.java
@@ -0,0 +1,10 @@
+//nothing added to m, f
+package p;
+class A{	
+	protected void m(){
+		f();
+	}
+	private void f(){}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers5/in/A.java
new file mode 100644
index 0000000..2f886b3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers5/in/A.java
@@ -0,0 +1,10 @@
+//f added to m
+package p;
+class A{	
+	protected void m(){
+		f++;
+	}
+	private int f;
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers6/in/A.java
new file mode 100644
index 0000000..4ff11d4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers6/in/A.java
@@ -0,0 +1,10 @@
+//nothing added to m, f
+package p;
+class A{	
+	protected void m(){
+		f++;
+	}
+	private int f;
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers7/in/A.java
new file mode 100644
index 0000000..b016fdf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers7/in/A.java
@@ -0,0 +1,10 @@
+//m added to f
+package p;
+class A{	
+	private int m(){
+		return 2;
+	}
+	private int f= m();
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers8/in/A.java
new file mode 100644
index 0000000..5f9dd72
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers8/in/A.java
@@ -0,0 +1,8 @@
+//m added to f
+package p;
+class A{	
+	private int m= 1;
+	private int f= m;
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers9/in/A.java
new file mode 100644
index 0000000..bab8e48
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testAddingRequiredMembers9/in/A.java
@@ -0,0 +1,8 @@
+//m added to f
+package p;
+class A{	
+	public int m= 1;
+	private int f= m;
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement0/in/A.java
new file mode 100644
index 0000000..852233b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement0/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement1/in/A.java
new file mode 100644
index 0000000..94061ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement1/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+}
+class B extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement10/in/A.java
new file mode 100644
index 0000000..942a1ee
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement10/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A<T>{
+}
+class B extends A<String>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement11/in/A.java
new file mode 100644
index 0000000..a0dcafd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement11/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+}
+class B<T> extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement12/in/A.java
new file mode 100644
index 0000000..c3b774b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement12/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A<T> extends Outer.B{
+}
+class Outer{
+	class B{
+		/**
+	 	* comment
+	 	*/
+		void f(){}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement13/in/A.java
new file mode 100644
index 0000000..92eb9c0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement13/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A<T> extends Outer.B<T>{
+}
+class Outer{
+	class B<S>{
+		/**
+	 	* comment
+	 	*/
+		void f(){}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement14/in/A.java
new file mode 100644
index 0000000..42abfe6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement14/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A extends Outer.B<String>{
+}
+class Outer<S>{
+	class B<S>{
+		/**
+	 	* comment
+	 	*/
+		void f(){}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement15/in/A.java
new file mode 100644
index 0000000..064c127
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement15/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A<T> extends Outer.B<String>{
+}
+class Outer<S>{
+	class B{
+		/**
+	 	* comment
+	 	*/
+		void f(){}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement2/in/A.java
new file mode 100644
index 0000000..0ec26c4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement2/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A extends Outer.B{
+}
+class Outer{
+	class B{
+		/**
+	 	* comment
+	 	*/
+		void f(){}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement3/in/A.java
new file mode 100644
index 0000000..9474bd6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement3/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+}
+class B extends A{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement4/in/A.java
new file mode 100644
index 0000000..43a71a2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement4/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
+class B<T> extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement5/in/A.java
new file mode 100644
index 0000000..1c810d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement5/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A<T>{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
+class B<T> extends A<T>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement6/in/A.java
new file mode 100644
index 0000000..7a696a8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement6/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A<T>{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
+class B<S,T> extends A<T>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement7/in/A.java
new file mode 100644
index 0000000..43498be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement7/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A<T>{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
+class B extends A<String>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement8/in/A.java
new file mode 100644
index 0000000..0831dce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement8/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	/**
+	 * comment
+	 */
+	void f(){}
+}
+class B<S> extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement9/in/A.java
new file mode 100644
index 0000000..0090057
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testEnablement9/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A<T>{
+}
+class B<T> extends A<T>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail0/in/A.java
new file mode 100644
index 0000000..4bad1a3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail0/in/A.java
@@ -0,0 +1,6 @@
+//do subclasses
+package p;
+
+class A {
+	public void f(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail1/in/A.java
new file mode 100644
index 0000000..09ab090
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail1/in/A.java
@@ -0,0 +1,6 @@
+//interface
+package p;
+
+interface A {
+	public void f();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail10/in/A.java
new file mode 100644
index 0000000..f89d007
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail10/in/A.java
@@ -0,0 +1,15 @@
+//pushing foo not possible - referenced by bar
+package p;
+
+class A {
+	
+	private int bar() {
+		return foo();
+	}
+
+	private int foo() {
+		return bar();
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail11/in/A.java
new file mode 100644
index 0000000..0731d5b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail11/in/A.java
@@ -0,0 +1,13 @@
+//pushing foo not possible - referenced by bar
+package p;
+
+class A {
+	
+	private int bar= foo();
+
+	private int foo() {
+		return 1;
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail12/in/A.java
new file mode 100644
index 0000000..6ba6999
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail12/in/A.java
@@ -0,0 +1,13 @@
+//pushing bar not possible - referenced by foo
+package p;
+
+class A {
+	
+	private int bar= foo();
+
+	private int foo() {
+		return bar;
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail2/in/A.java
new file mode 100644
index 0000000..04f3a08
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail2/in/A.java
@@ -0,0 +1,9 @@
+//already exists
+package p;
+
+class A {
+	public void f(){}
+}
+class B extends A {
+	public void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail3/in/A.java
new file mode 100644
index 0000000..de53f57
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail3/in/A.java
@@ -0,0 +1,9 @@
+//already exists
+package p;
+
+class A {
+	public int i;
+}
+class B extends A {
+	public int i;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail7/in/A.java
new file mode 100644
index 0000000..321fb7b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail7/in/A.java
@@ -0,0 +1,13 @@
+//making f abstract not possible - calls to A's constructors
+package p;
+
+class A {
+	A(){}
+	public void f(){
+	}
+}
+class B extends A {
+	void g(){
+		A a= new A();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail8/in/A.java
new file mode 100644
index 0000000..665ac2f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail8/in/A.java
@@ -0,0 +1,12 @@
+//making f abstract not possible - calls to A's constructors
+package p;
+
+class A {
+	public void f(){
+	}
+}
+class B extends A {
+	void g(){
+		A a= new A();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail9/in/A.java
new file mode 100644
index 0000000..be0dcd3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testFail9/in/A.java
@@ -0,0 +1,13 @@
+//pushing f not possible - referenced by getF
+package p;
+
+class A {
+	
+	private int f;
+
+	public int getF() {
+		return f;
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics0/in/A.java
new file mode 100644
index 0000000..9a95622
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics0/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<T>{
+	public void m() {}
+}
+class B extends A<String>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics0/out/A.java
new file mode 100644
index 0000000..eb60bad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics0/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A<T>{
+}
+class B extends A<String>{
+
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics1/in/A.java
new file mode 100644
index 0000000..9a95622
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics1/in/A.java
@@ -0,0 +1,6 @@
+package p;
+class A<T>{
+	public void m() {}
+}
+class B extends A<String>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics1/out/A.java
new file mode 100644
index 0000000..537f5f3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics1/out/A.java
@@ -0,0 +1,9 @@
+package p;
+abstract class A<T>{
+	public abstract void m();
+}
+class B extends A<String>{
+
+	@Override
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics10/in/A.java
new file mode 100644
index 0000000..143271b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics10/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A<T>{
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
+class B<T> extends A<T>{
+}
+class B1 extends B<String>{
+}
+class C extends A<String>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics10/out/A.java
new file mode 100644
index 0000000..04c8b9f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics10/out/A.java
@@ -0,0 +1,19 @@
+package p;
+class A<T>{
+}
+class B<T> extends A<T>{
+
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
+class B1 extends B<String>{
+}
+class C extends A<String>{
+
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics11/in/A.java
new file mode 100644
index 0000000..82c080e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics11/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A<T>{
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
+class B<T> extends A<T>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics11/out/A.java
new file mode 100644
index 0000000..90bdb72
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics11/out/A.java
@@ -0,0 +1,10 @@
+package p;
+class A<T>{
+}
+class B<T> extends A<T>{
+
+	/**
+	 * comment
+	 */
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics12/in/A.java
new file mode 100644
index 0000000..d8cfeca
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics12/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A<T>{
+
+	public int f;
+}
+class B<T> extends A<T>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics12/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics12/out/A.java
new file mode 100644
index 0000000..4a85771
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics12/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A<T>{
+}
+class B<T> extends A<T>{
+
+	public int f;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics13/in/A.java
new file mode 100644
index 0000000..8123452
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics13/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A<T>{
+
+	public int f, g;
+	public T t;
+}
+class B extends A<String>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics13/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics13/out/A.java
new file mode 100644
index 0000000..2ccca45
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics13/out/A.java
@@ -0,0 +1,10 @@
+package p;
+class A<T>{
+
+	public int g;
+	public T t;
+}
+class B extends A<String>{
+
+	public int f;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics14/in/A.java
new file mode 100644
index 0000000..cabdf41
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics14/in/A.java
@@ -0,0 +1,7 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+}
+abstract class B<T> extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics14/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics14/out/A.java
new file mode 100644
index 0000000..b5a01f0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics14/out/A.java
@@ -0,0 +1,9 @@
+package p;
+abstract class A{
+
+	public abstract void f();
+}
+abstract class B<T> extends A{
+
+	public abstract void f();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics15/in/A.java
new file mode 100644
index 0000000..6eb4a85
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics15/in/A.java
@@ -0,0 +1,7 @@
+package p;
+abstract class A<T>{
+
+	public abstract void f();
+}
+abstract class B<T> extends A<String>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics15/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics15/out/A.java
new file mode 100644
index 0000000..2865e11
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics15/out/A.java
@@ -0,0 +1,7 @@
+package p;
+abstract class A<T>{
+}
+abstract class B<T> extends A<String>{
+
+	public abstract void f();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics16/in/A.java
new file mode 100644
index 0000000..a43bf97
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics16/in/A.java
@@ -0,0 +1,10 @@
+package p;
+abstract class A<T>{
+
+	public abstract T f();
+}
+abstract class B<T> extends A<String>{
+}
+class C extends A<Object>{
+	public Object f(){return null;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics16/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics16/out/A.java
new file mode 100644
index 0000000..cbdb49a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics16/out/A.java
@@ -0,0 +1,10 @@
+package p;
+abstract class A<T>{
+}
+abstract class B<T> extends A<String>{
+
+	public abstract String f();
+}
+class C extends A<Object>{
+	public Object f(){return null;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics17/in/A.java
new file mode 100644
index 0000000..4ca0001
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics17/in/A.java
@@ -0,0 +1,10 @@
+package p;
+abstract class A<T>{
+
+	public abstract T f();
+}
+abstract class B<S> extends A<String>{
+}
+class C extends A<Object>{
+	public Object f(){return null;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics17/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics17/out/A.java
new file mode 100644
index 0000000..f13689a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics17/out/A.java
@@ -0,0 +1,12 @@
+package p;
+abstract class A<T>{
+
+	public abstract T f();
+}
+abstract class B<S> extends A<String>{
+
+	public abstract String f();
+}
+class C extends A<Object>{
+	public Object f(){return null;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics18/in/A.java
new file mode 100644
index 0000000..c3b9e8f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics18/in/A.java
@@ -0,0 +1,12 @@
+package p;
+abstract class A<T>{
+
+	public abstract void f();
+
+	public void m(T t) {}
+}
+abstract class B extends A<String>{
+}
+class C extends A<Object>{
+	public void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics18/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics18/out/A.java
new file mode 100644
index 0000000..3b4988b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics18/out/A.java
@@ -0,0 +1,14 @@
+package p;
+abstract class A<T>{
+}
+abstract class B extends A<String>{
+
+	public void m(String t) {}
+
+	public abstract void f();
+}
+class C extends A<Object>{
+	public void f(){}
+
+	public void m(Object t) {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics19/in/A.java
new file mode 100644
index 0000000..62d045b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics19/in/A.java
@@ -0,0 +1,15 @@
+package p;
+abstract class A<T>{
+
+	public abstract void f();
+
+	public T m(T t) {
+		T s= t;
+		return null;
+	}
+}
+abstract class B extends A<String>{
+}
+class C extends A<Object>{
+	public void f(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics19/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics19/out/A.java
new file mode 100644
index 0000000..e6f9be9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics19/out/A.java
@@ -0,0 +1,26 @@
+package p;
+abstract class A<T>{
+
+	public abstract void f();
+
+	public abstract T m(T t);
+}
+abstract class B extends A<String>{
+
+	@Override
+	public String m(String t) {
+		String s= t;
+		return null;
+	}
+
+	public abstract void f();
+}
+class C extends A<Object>{
+	public void f(){}
+
+	@Override
+	public Object m(Object t) {
+		Object s= t;
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics2/in/A.java
new file mode 100644
index 0000000..2ef4708
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics2/in/A.java
@@ -0,0 +1,6 @@
+package p;
+abstract class A<S>{
+	public abstract void m();
+}
+abstract class B extends A<String>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics2/out/A.java
new file mode 100644
index 0000000..7b77135
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics2/out/A.java
@@ -0,0 +1,7 @@
+package p;
+abstract class A<S>{
+}
+abstract class B extends A<String>{
+
+	public abstract void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics3/in/A.java
new file mode 100644
index 0000000..cf5ef21
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics3/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A<S>{
+	public void m() {}
+}
+class B<T> extends A<T>{
+}
+class B1 extends B<String>{
+}
+class C<R> extends A<R>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics3/out/A.java
new file mode 100644
index 0000000..ad9dabd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics3/out/A.java
@@ -0,0 +1,13 @@
+package p;
+class A<S>{
+}
+class B<T> extends A<T>{
+
+	public void m() {}
+}
+class B1 extends B<String>{
+}
+class C<R> extends A<R>{
+
+	public void m() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics4/in/A.java
new file mode 100644
index 0000000..bca198f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics4/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A<T>{
+	public T m() {return null;}
+}
+class B extends A<String>{
+}
+class B1 extends B{
+}
+class C extends A<String>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics4/out/A.java
new file mode 100644
index 0000000..be2d96c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics4/out/A.java
@@ -0,0 +1,16 @@
+package p;
+abstract class A<T>{
+	public abstract T m();
+}
+class B extends A<String>{
+
+	@Override
+	public String m() {return null;}
+}
+class B1 extends B{
+}
+class C extends A<String>{
+
+	@Override
+	public String m() {return null;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics5/in/A.java
new file mode 100644
index 0000000..99a347e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics5/in/A.java
@@ -0,0 +1,10 @@
+package p;
+abstract class A<T>{
+	public abstract void m();
+}
+abstract class B extends A<String>{
+}
+abstract class B1 extends B{
+}
+abstract class C extends A<String>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics5/out/A.java
new file mode 100644
index 0000000..d4b87a7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics5/out/A.java
@@ -0,0 +1,13 @@
+package p;
+abstract class A<T>{
+}
+abstract class B extends A<String>{
+
+	public abstract void m();
+}
+abstract class B1 extends B{
+}
+abstract class C extends A<String>{
+
+	public abstract void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics6/in/A.java
new file mode 100644
index 0000000..67a2fdf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics6/in/A.java
@@ -0,0 +1,6 @@
+package p;
+abstract class A<T>{
+	public abstract T m();
+}
+abstract class B<S> extends A<S>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics6/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics6/out/A.java
new file mode 100644
index 0000000..144687e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics6/out/A.java
@@ -0,0 +1,8 @@
+package p;
+abstract class A<T>{
+	public abstract T m();
+}
+abstract class B<S> extends A<S>{
+
+	public abstract S m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics7/in/A.java
new file mode 100644
index 0000000..b70508f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics7/in/A.java
@@ -0,0 +1,10 @@
+package p;
+abstract class A{
+	public abstract void m();
+}
+abstract class B<S> extends A{
+}
+abstract class B1<S> extends B<String>{
+}
+abstract class C<S> extends A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics7/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics7/out/A.java
new file mode 100644
index 0000000..5a26357
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics7/out/A.java
@@ -0,0 +1,14 @@
+package p;
+abstract class A{
+	public abstract void m();
+}
+abstract class B<S> extends A{
+
+	public abstract void m();
+}
+abstract class B1<S> extends B<String>{
+}
+abstract class C<S> extends A{
+
+	public abstract void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics8/in/A.java
new file mode 100644
index 0000000..d249347
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics8/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A<T>{
+	/**
+	 * comment
+	 */
+	public T m() {return null;}
+}
+class B<T> extends A<T>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics8/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics8/out/A.java
new file mode 100644
index 0000000..c3d4294
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics8/out/A.java
@@ -0,0 +1,12 @@
+package p;
+abstract class A<T>{
+	/**
+	 * comment
+	 */
+	public abstract T m();
+}
+class B<T> extends A<T>{
+
+	@Override
+	public T m() {return null;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics9/in/A.java
new file mode 100644
index 0000000..b97bf82
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics9/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A<T>{
+	/**
+	 * comment
+	 */
+	public T m() {return null;}
+}
+class B extends A<String>{
+}
+class B1 extends B{
+}
+class C extends A<Object>{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics9/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics9/out/A.java
new file mode 100644
index 0000000..9f35ec9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testGenerics9/out/A.java
@@ -0,0 +1,19 @@
+package p;
+abstract class A<T>{
+	/**
+	 * comment
+	 */
+	public abstract T m();
+}
+class B extends A<String>{
+
+	@Override
+	public String m() {return null;}
+}
+class B1 extends B{
+}
+class C extends A<Object>{
+
+	@Override
+	public Object m() {return null;}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility0/in/A.java
new file mode 100644
index 0000000..2622bec
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility0/in/A.java
@@ -0,0 +1,14 @@
+package p;
+
+class A {
+	
+	private int bar() {
+		return foo();
+	}
+
+	public int foo() {
+		return bar();
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility0/out/A.java
new file mode 100644
index 0000000..ac75a09
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility0/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+abstract class A {
+	
+	protected int bar() {
+		return foo();
+	}
+
+	public abstract int foo();
+}
+class B extends A {
+
+	@Override
+	public int foo() {
+		return bar();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility1/in/A.java
new file mode 100644
index 0000000..ec01e15
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility1/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+	public void f(){
+		m();
+	}
+	private void m(){
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility1/out/A.java
new file mode 100644
index 0000000..5036657
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility1/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+class A {
+	protected void m(){
+	}
+}
+class B extends A {
+
+	public void f() {
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility2/in/A.java
new file mode 100644
index 0000000..b5f5d86
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility2/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+	public void f(){
+		i++;
+	}
+	private int i;
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility2/out/A.java
new file mode 100644
index 0000000..5fc8d4e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility2/out/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+	protected int i;
+}
+class B extends A {
+
+	public void f() {
+		i++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility3/in/A.java
new file mode 100644
index 0000000..7ea8067
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility3/in/A.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+	private static class T{}
+	public T f(){
+		return new T();
+	}
+}
+class B extends A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility3/out/A.java
new file mode 100644
index 0000000..14818b3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/PushDown/testVisibility3/out/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+	static class T{}
+}
+class B extends A {
+
+	public T f() {
+		return new T();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RefactoringScanner/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RefactoringScanner/A.java
new file mode 100644
index 0000000..2fb8d0a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RefactoringScanner/A.java
@@ -0,0 +1,20 @@
+class A{

+	/**

+	 * TestPattern

+	 * 	 TestPattern

+	 */

+	void f(){

+	}

+	

+	/*

+	 * TestPattern

+	 * 

+	 * 	TestPattern

+	 */

+	void f1(){

+		f1();//TestPattern //org.eclipse.TestPattern

+		String g= "TestPattern";

+		String g2= "org.eclipse.TestPattern";

+	}

+	

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RefactoringScanner/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RefactoringScanner/B.java
new file mode 100644
index 0000000..5e79e3b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RefactoringScanner/B.java
@@ -0,0 +1,21 @@
+class B{

+	/**

+	 * TestTestPattern

+	 * 	 TestPattern

+	 */

+	void f(){

+	}

+	

+	/*

+	 * TestTestPattern

+	 * 

+	 * 	TestPattern

+	 */

+	void f1(){

+		f1();//TestPattern //org.eclipse.TestPattern

+		String g= "TestPattern";//TestTestPattern

+		String g2= "org.eclipse.TestPattern";

+		String g3= "org.eclipse.TestPatternMatching";

+	}

+	

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RefactoringScanner/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RefactoringScanner/C.java
new file mode 100644
index 0000000..6d307c0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RefactoringScanner/C.java
@@ -0,0 +1,40 @@
+class B{
+	/**
+	 * org.eclipse.TestTestPattern
+	 * (org.eclipse.TestPattern)
+	 * borg.eclipse.TestPattern
+	 */
+	void f(){
+	}
+	
+	/*
+	 * org.eclipse.TestTestPattern
+	 * borg.eclipse.TestTestPattern
+	 * rg.eclipse.TestTestPattern
+	 * <org.eclipse.TestTestPattern>
+	 * <org.eclipse.TestPatternTest>
+	 * 
+	 * org.eclipse. TestPattern
+	 * org.eclipse .TestPattern
+	 * 	x.TestPattern
+	 */
+	void f1(){
+		f1();//borg.TestPattern //borg.eclipse.TestPattern
+		String g= "ork.TestPattern";//org.eclipse.TestTestPattern
+		String g2= "org.eklipse.TestPattern";
+		String g3= "org.eclipse.TestPatternMatching";
+	}
+	/*
+	 * #org.eclipse.TestPattern
+	 * org.eclipse.TestPattern#
+	 * 
+	 * $org.eclipse.TestPattern
+	 * org.eclipse.TestPattern$
+	 * 
+	 * 1org.eclipse.TestPattern
+	 * org.eclipse.TestPattern1
+	 * 
+	 * *org.eclipse.TestPattern
+	 * org.eclipse.TestPattern*
+	 */
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test0/in/A.java
new file mode 100644
index 0000000..b350409
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test0/in/A.java
@@ -0,0 +1,8 @@
+//renaming I.m to k
+package p;
+class A{
+	public void m(){};
+} 
+interface I {
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test0/out/A.java
new file mode 100644
index 0000000..fcfc86f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test0/out/A.java
@@ -0,0 +1,8 @@
+//renaming I.m to k
+package p;
+class A{
+	public void m(){};
+} 
+interface I {
+	void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test1/in/A.java
new file mode 100644
index 0000000..1ef6f4d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test1/in/A.java
@@ -0,0 +1,8 @@
+//renaming I.m to k
+package p;
+class A implements I{
+	public void m(){};
+} 
+interface I {
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test1/out/A.java
new file mode 100644
index 0000000..e34858d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test1/out/A.java
@@ -0,0 +1,8 @@
+//renaming I.m to k
+package p;
+class A implements I{
+	public void k(){};
+} 
+interface I {
+	void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test10/in/A.java
new file mode 100644
index 0000000..4880ef7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test10/in/A.java
@@ -0,0 +1,9 @@
+package p;
+interface I{
+void m();
+}
+interface I2 extends I{
+}
+interface I3 extends I2{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test10/out/A.java
new file mode 100644
index 0000000..bdfa91e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test10/out/A.java
@@ -0,0 +1,9 @@
+package p;
+interface I{
+void k();
+}
+interface I2 extends I{
+}
+interface I3 extends I2{
+void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test11/in/A.java
new file mode 100644
index 0000000..275bd81
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test11/in/A.java
@@ -0,0 +1,10 @@
+//renaming I.m to k
+package p;
+interface I{
+void m();
+}
+interface I2{
+void m();
+}
+interface I3 extends I, I2{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test11/out/A.java
new file mode 100644
index 0000000..9c5c52b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test11/out/A.java
@@ -0,0 +1,10 @@
+//renaming I.m to k
+package p;
+interface I{
+void k();
+}
+interface I2{
+void k();
+}
+interface I3 extends I, I2{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test12/in/A.java
new file mode 100644
index 0000000..fb2dbbf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test12/in/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+interface I{
+void m();
+}
+interface I2{
+void m();
+}
+interface I3 extends I, I2{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test12/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test12/out/A.java
new file mode 100644
index 0000000..70a291f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test12/out/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+interface I{
+void k();
+}
+interface I2{
+void k();
+}
+interface I3 extends I, I2{
+void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test14/in/A.java
new file mode 100644
index 0000000..6440b68
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test14/in/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+interface I{
+	void m();
+}
+interface I1 extends I{
+}
+interface I2 extends I1{
+	void m();
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test14/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test14/out/A.java
new file mode 100644
index 0000000..3cd2392
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test14/out/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+interface I{
+	void k();
+}
+interface I1 extends I{
+}
+interface I2 extends I1{
+	void k();
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test15/in/A.java
new file mode 100644
index 0000000..a32d285
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test15/in/A.java
@@ -0,0 +1,15 @@
+//renaming I.m to k
+package p;
+interface I{
+	void m();
+}
+interface J{
+	void m();
+}
+interface I1 extends I{
+}
+interface J1 extends J{
+}
+interface I2 extends I1, J1{
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test15/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test15/out/A.java
new file mode 100644
index 0000000..25c1a19
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test15/out/A.java
@@ -0,0 +1,15 @@
+//renaming I.m to k
+package p;
+interface I{
+	void k();
+}
+interface J{
+	void k();
+}
+interface I1 extends I{
+}
+interface J1 extends J{
+}
+interface I2 extends I1, J1{
+	void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test16/in/A.java
new file mode 100644
index 0000000..32d0d0d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test16/in/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+interface I{
+	void m();
+}
+interface J{
+	void m();
+}
+class C implements I, J{
+	public void m(){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test16/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test16/out/A.java
new file mode 100644
index 0000000..a98d2fe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test16/out/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+interface I{
+	void k();
+}
+interface J{
+	void k();
+}
+class C implements I, J{
+	public void k(){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test17/in/A.java
new file mode 100644
index 0000000..d8b4757
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test17/in/A.java
@@ -0,0 +1,14 @@
+//renaming I.m to k
+package p;
+interface I{
+	void m();
+}
+interface J{
+	void m();
+}
+class A{
+	public void m(){};
+}
+class C extends A implements I, J{
+	public void m(){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test17/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test17/out/A.java
new file mode 100644
index 0000000..dc8dc48
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test17/out/A.java
@@ -0,0 +1,14 @@
+//renaming I.m to k
+package p;
+interface I{
+	void k();
+}
+interface J{
+	void k();
+}
+class A{
+	public void k(){};
+}
+class C extends A implements I, J{
+	public void k(){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test18/in/A.java
new file mode 100644
index 0000000..75b5aa0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test18/in/A.java
@@ -0,0 +1,18 @@
+//renaming I.m to k
+package p;
+interface I {
+	void m();
+}
+interface J{
+	void m();
+}
+interface J2 extends J{
+	void m();
+}
+
+class A{
+	public void m(){}
+}
+class C extends A implements I, J{
+	public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test18/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test18/out/A.java
new file mode 100644
index 0000000..7f42185
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test18/out/A.java
@@ -0,0 +1,18 @@
+//renaming I.m to k
+package p;
+interface I {
+	void k();
+}
+interface J{
+	void k();
+}
+interface J2 extends J{
+	void k();
+}
+
+class A{
+	public void k(){}
+}
+class C extends A implements I, J{
+	public void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test19/in/A.java
new file mode 100644
index 0000000..057ee69
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test19/in/A.java
@@ -0,0 +1,18 @@
+//renaming I.m to k
+package p;
+interface I {
+	void m();
+}
+interface J{
+	void m();
+}
+interface J2 extends J{
+	void m();
+}
+
+class A{
+	private void m(){}
+}
+class C extends A implements I, J{
+	public void m(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test19/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test19/out/A.java
new file mode 100644
index 0000000..fca3cb3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test19/out/A.java
@@ -0,0 +1,18 @@
+//renaming I.m to k
+package p;
+interface I {
+	void k();
+}
+interface J{
+	void k();
+}
+interface J2 extends J{
+	void k();
+}
+
+class A{
+	private void m(){}
+}
+class C extends A implements I, J{
+	public void k(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test2/in/A.java
new file mode 100644
index 0000000..0211b7e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test2/in/A.java
@@ -0,0 +1,9 @@
+//renaming I.m to k
+package p;
+class A implements I{
+	public void m(){};
+	public void m(int y){};
+} 
+interface I {
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test2/out/A.java
new file mode 100644
index 0000000..806e8b1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test2/out/A.java
@@ -0,0 +1,9 @@
+//renaming I.m to k
+package p;
+class A implements I{
+	public void k(){};
+	public void m(int y){};
+} 
+interface I {
+	void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test20/in/A.java
new file mode 100644
index 0000000..4606b91
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test20/in/A.java
@@ -0,0 +1,17 @@
+//renaming I.m to k
+package p;
+interface I {
+	void m();
+}
+interface J{
+	void m();
+}
+interface J2 extends J{
+	void m();
+}
+
+class A{
+	public void m(){}
+}
+class C extends A implements I, J{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test20/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test20/out/A.java
new file mode 100644
index 0000000..0179740
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test20/out/A.java
@@ -0,0 +1,17 @@
+//renaming I.m to k
+package p;
+interface I {
+	void k();
+}
+interface J{
+	void k();
+}
+interface J2 extends J{
+	void k();
+}
+
+class A{
+	public void k(){}
+}
+class C extends A implements I, J{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test21/in/A.java
new file mode 100644
index 0000000..6637d92
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test21/in/A.java
@@ -0,0 +1,39 @@
+//renaming I.m to k
+package p;
+interface I {
+	void m();
+}
+interface J{
+	void m();
+}
+interface J2 extends J{
+	void m();
+}
+
+class A{
+	public void m(){};
+}
+class C extends A implements I, J{
+	public void m(){};
+}
+class Test{
+	void k(){
+		I i= new C();
+		i.m();
+		I ii= new I(){
+			public void m(){}
+		};
+		ii.m();
+		J j= new C();
+		j.m();
+		J jj= new J(){
+			public void m(){}
+		};
+		jj.m();
+		A a= new C();
+		((I)a).m();
+		((J)a).m();
+		((C)a).m();
+		a.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test21/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test21/out/A.java
new file mode 100644
index 0000000..d8ecabe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test21/out/A.java
@@ -0,0 +1,39 @@
+//renaming I.m to k
+package p;
+interface I {
+	void k();
+}
+interface J{
+	void k();
+}
+interface J2 extends J{
+	void k();
+}
+
+class A{
+	public void k(){};
+}
+class C extends A implements I, J{
+	public void k(){};
+}
+class Test{
+	void k(){
+		I i= new C();
+		i.k();
+		I ii= new I(){
+			public void k(){}
+		};
+		ii.k();
+		J j= new C();
+		j.k();
+		J jj= new J(){
+			public void k(){}
+		};
+		jj.k();
+		A a= new C();
+		((I)a).k();
+		((J)a).k();
+		((C)a).k();
+		a.k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test22/in/A.java
new file mode 100644
index 0000000..bb8601f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test22/in/A.java
@@ -0,0 +1,7 @@
+package p;
+interface I{
+void m();
+}
+interface I2{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test22/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test22/out/A.java
new file mode 100644
index 0000000..9da5d69
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test22/out/A.java
@@ -0,0 +1,7 @@
+package p;
+interface I{
+void k();
+}
+interface I2{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test24/in/A.java
new file mode 100644
index 0000000..27496f9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test24/in/A.java
@@ -0,0 +1,11 @@
+package p;
+interface J{
+}
+interface I extends J{
+void m();
+}
+interface I1 extends J{
+void m();
+}
+interface K extends I, I1{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test24/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test24/out/A.java
new file mode 100644
index 0000000..0a0a465
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test24/out/A.java
@@ -0,0 +1,11 @@
+package p;
+interface J{
+}
+interface I extends J{
+void k();
+}
+interface I1 extends J{
+void k();
+}
+interface K extends I, I1{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test25/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test25/in/A.java
new file mode 100644
index 0000000..ccef3b0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test25/in/A.java
@@ -0,0 +1,13 @@
+package p;
+interface J{
+}
+interface I extends J{
+void m();
+}
+interface I1 extends J{
+void m();
+}
+class C implements I, I1{
+public void m(){}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test25/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test25/out/A.java
new file mode 100644
index 0000000..a27964f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test25/out/A.java
@@ -0,0 +1,13 @@
+package p;
+interface J{
+}
+interface I extends J{
+void k();
+}
+interface I1 extends J{
+void k();
+}
+class C implements I, I1{
+public void k(){}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test26/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test26/in/A.java
new file mode 100644
index 0000000..6b63346
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test26/in/A.java
@@ -0,0 +1,4 @@
+package p;
+interface I{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test26/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test26/out/A.java
new file mode 100644
index 0000000..d3b3476
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test26/out/A.java
@@ -0,0 +1,4 @@
+package p;
+interface I{
+void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test27/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test27/in/A.java
new file mode 100644
index 0000000..9752fe0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test27/in/A.java
@@ -0,0 +1,12 @@
+package p;
+interface I{
+void m();
+}
+class A{
+public void m(){};
+}
+class B1 extends A{
+public void m(){};
+}
+class B2 extends A implements I{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test27/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test27/out/A.java
new file mode 100644
index 0000000..b3b2478
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test27/out/A.java
@@ -0,0 +1,12 @@
+package p;
+interface I{
+void k();
+}
+class A{
+public void k(){};
+}
+class B1 extends A{
+public void k(){};
+}
+class B2 extends A implements I{
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test28/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test28/in/A.java
new file mode 100644
index 0000000..82ab659
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test28/in/A.java
@@ -0,0 +1,14 @@
+package p;
+interface I{
+void m();
+}
+class A{
+public void m(){};
+}
+class B1 extends A implements J{
+}
+class B2 extends A implements I{
+}
+interface J{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test28/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test28/out/A.java
new file mode 100644
index 0000000..9104fdc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test28/out/A.java
@@ -0,0 +1,14 @@
+package p;
+interface I{
+void k();
+}
+class A{
+public void k(){};
+}
+class B1 extends A implements J{
+}
+class B2 extends A implements I{
+}
+interface J{
+void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test29/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test29/in/A.java
new file mode 100644
index 0000000..e1fd825
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test29/in/A.java
@@ -0,0 +1,17 @@
+package p;
+interface I{
+void m();
+}
+class A{
+public void m(){};
+}
+class B1 extends A implements J{
+}
+class B2 extends A implements I{
+}
+interface J{
+void m();
+}
+class C implements J{
+public void m(){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test29/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test29/out/A.java
new file mode 100644
index 0000000..c9b5575
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test29/out/A.java
@@ -0,0 +1,17 @@
+package p;
+interface I{
+void k();
+}
+class A{
+public void k(){};
+}
+class B1 extends A implements J{
+}
+class B2 extends A implements I{
+}
+interface J{
+void k();
+}
+class C implements J{
+public void k(){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test3/in/A.java
new file mode 100644
index 0000000..4dcd03a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test3/in/A.java
@@ -0,0 +1,10 @@
+//renaming I.m to k
+package p;
+class B {
+	public void m(){};
+} 
+class A extends B implements I{
+} 
+interface I {
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test3/out/A.java
new file mode 100644
index 0000000..240933e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test3/out/A.java
@@ -0,0 +1,10 @@
+//renaming I.m to k
+package p;
+class B {
+	public void k(){};
+} 
+class A extends B implements I{
+} 
+interface I {
+	void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test30/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test30/in/A.java
new file mode 100644
index 0000000..bfa4f7f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test30/in/A.java
@@ -0,0 +1,16 @@
+package p;
+interface I{
+void m();
+}
+class A implements I, J{
+public void m(){};
+}
+interface J{
+void m();
+}
+class B implements J, K{
+public void m(){};
+}
+interface K{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test30/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test30/out/A.java
new file mode 100644
index 0000000..5f224c0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test30/out/A.java
@@ -0,0 +1,16 @@
+package p;
+interface I{
+void k();
+}
+class A implements I, J{
+public void k(){};
+}
+interface J{
+void k();
+}
+class B implements J, K{
+public void k(){};
+}
+interface K{
+void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test31/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test31/in/A.java
new file mode 100644
index 0000000..0786e6f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test31/in/A.java
@@ -0,0 +1,13 @@
+package p;
+interface I{
+void m();
+}
+class T{
+	void m(){
+		class X implements I{
+			public void m(){}
+		};
+		X x= new X();
+		x.m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test31/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test31/out/A.java
new file mode 100644
index 0000000..6730892
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test31/out/A.java
@@ -0,0 +1,13 @@
+package p;
+interface I{
+void k();
+}
+class T{
+	void m(){
+		class X implements I{
+			public void k(){}
+		};
+		X x= new X();
+		x.k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test32/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test32/in/A.java
new file mode 100644
index 0000000..4f67f9b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test32/in/A.java
@@ -0,0 +1,14 @@
+package p;
+interface I{
+void m();
+}
+class T implements I{
+	public void m(){
+		class X implements I{
+			public void m(){}
+		};
+		X x= new X();
+		x.m();
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test32/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test32/out/A.java
new file mode 100644
index 0000000..c1f58ed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test32/out/A.java
@@ -0,0 +1,14 @@
+package p;
+interface I{
+void k();
+}
+class T implements I{
+	public void k(){
+		class X implements I{
+			public void k(){}
+		};
+		X x= new X();
+		x.k();
+		k();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test33/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test33/in/A.java
new file mode 100644
index 0000000..2aedcc3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test33/in/A.java
@@ -0,0 +1,23 @@
+//renaming I.m to k
+package p;
+interface I{
+void m();
+}
+class A1 implements I, I1{
+public void m(){}
+}
+interface I1{
+void m();
+}
+class A2 implements I1, I2{
+public void m(){}
+}
+interface I2{
+void m();
+}
+class A3 implements I3, I2{
+public void m(){}
+}
+interface I3{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test33/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test33/out/A.java
new file mode 100644
index 0000000..1facb63
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test33/out/A.java
@@ -0,0 +1,23 @@
+//renaming I.m to k
+package p;
+interface I{
+void k();
+}
+class A1 implements I, I1{
+public void k(){}
+}
+interface I1{
+void k();
+}
+class A2 implements I1, I2{
+public void k(){}
+}
+interface I2{
+void k();
+}
+class A3 implements I3, I2{
+public void k(){}
+}
+interface I3{
+void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test34/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test34/in/A.java
new file mode 100644
index 0000000..255c6b9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test34/in/A.java
@@ -0,0 +1,12 @@
+//renaming I.m to k
+package p;
+interface I{
+void m();
+}
+
+class A1 implements I{
+public void m(){}
+}
+interface I1{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test34/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test34/out/A.java
new file mode 100644
index 0000000..4b8563e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test34/out/A.java
@@ -0,0 +1,12 @@
+//renaming I.m to k
+package p;
+interface I{
+void k();
+}
+
+class A1 implements I{
+public void k(){}
+}
+interface I1{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test35/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test35/in/A.java
new file mode 100644
index 0000000..0b18234
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test35/in/A.java
@@ -0,0 +1,14 @@
+//renaming I.m to k
+package p;
+interface I{
+void m();
+}
+interface I2{
+void m();
+}
+interface I3 extends I, I2{
+}
+class A implements I3{
+public void m(){}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test35/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test35/out/A.java
new file mode 100644
index 0000000..fcbe37b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test35/out/A.java
@@ -0,0 +1,14 @@
+//renaming I.m to k
+package p;
+interface I{
+void k();
+}
+interface I2{
+void k();
+}
+interface I3 extends I, I2{
+}
+class A implements I3{
+public void k(){}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test36/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test36/in/A.java
new file mode 100644
index 0000000..70cb32c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test36/in/A.java
@@ -0,0 +1,8 @@
+//renaming I.m to k
+package p;
+interface I{
+void m();
+}
+interface I2{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test36/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test36/out/A.java
new file mode 100644
index 0000000..d8a8fe0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test36/out/A.java
@@ -0,0 +1,8 @@
+//renaming I.m to k
+package p;
+interface I{
+void k();
+}
+interface I2{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test37/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test37/in/A.java
new file mode 100644
index 0000000..51f4eb7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test37/in/A.java
@@ -0,0 +1,12 @@
+//renaming I.m to k
+package p;
+interface I{
+void m();
+}
+interface I2{
+void m();
+}
+interface I3 extends I{
+}
+interface I4 extends I3, I2{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test37/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test37/out/A.java
new file mode 100644
index 0000000..1feeb67
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test37/out/A.java
@@ -0,0 +1,12 @@
+//renaming I.m to k
+package p;
+interface I{
+void k();
+}
+interface I2{
+void k();
+}
+interface I3 extends I{
+}
+interface I4 extends I3, I2{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test38/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test38/in/A.java
new file mode 100644
index 0000000..5f67be9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test38/in/A.java
@@ -0,0 +1,13 @@
+//renaming I.m to k
+package p;
+interface I{
+void m();
+}
+class A{
+public void m(){}
+}
+class B1 extends A implements I{
+}
+class B2 extends A {
+public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test38/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test38/out/A.java
new file mode 100644
index 0000000..7ab2e0d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test38/out/A.java
@@ -0,0 +1,13 @@
+//renaming I.m to k
+package p;
+interface I{
+void k();
+}
+class A{
+public void k(){}
+}
+class B1 extends A implements I{
+}
+class B2 extends A {
+public void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test39/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test39/in/A.java
new file mode 100644
index 0000000..51f4eb7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test39/in/A.java
@@ -0,0 +1,12 @@
+//renaming I.m to k
+package p;
+interface I{
+void m();
+}
+interface I2{
+void m();
+}
+interface I3 extends I{
+}
+interface I4 extends I3, I2{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test39/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test39/out/A.java
new file mode 100644
index 0000000..1feeb67
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test39/out/A.java
@@ -0,0 +1,12 @@
+//renaming I.m to k
+package p;
+interface I{
+void k();
+}
+interface I2{
+void k();
+}
+interface I3 extends I{
+}
+interface I4 extends I3, I2{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test4/in/A.java
new file mode 100644
index 0000000..70d4d12
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test4/in/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+class B {
+	public void m(){};
+} 
+class A extends B implements I{
+	public void m(){};
+}
+interface I {
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test4/out/A.java
new file mode 100644
index 0000000..e6bd3c0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test4/out/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+class B {
+	public void k(){};
+} 
+class A extends B implements I{
+	public void k(){};
+}
+interface I {
+	void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test40/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test40/in/A.java
new file mode 100644
index 0000000..6ac8b0e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test40/in/A.java
@@ -0,0 +1,16 @@
+package p;
+//renaming I.m to k
+interface I{
+	void m();
+}
+interface I2{
+	void m();
+}
+class A{
+}
+class B extends A implements I{
+public void m(){}
+}
+class C extends A implements I2{
+public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test40/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test40/out/A.java
new file mode 100644
index 0000000..546a461
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test40/out/A.java
@@ -0,0 +1,16 @@
+package p;
+//renaming I.m to k
+interface I{
+	void k();
+}
+interface I2{
+	void m();
+}
+class A{
+}
+class B extends A implements I{
+public void k(){}
+}
+class C extends A implements I2{
+public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test41/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test41/in/A.java
new file mode 100644
index 0000000..941088d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test41/in/A.java
@@ -0,0 +1,20 @@
+package p;
+//renaming I.m to k
+interface I{
+	void m();
+}
+interface I2{
+	void m();
+	void k();
+	
+}
+class A{
+}
+class B extends A implements I{
+public void m(){}
+}
+class C extends A implements I2{
+public void m(){}
+public void k(){}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test41/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test41/out/A.java
new file mode 100644
index 0000000..83eaff0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test41/out/A.java
@@ -0,0 +1,20 @@
+package p;
+//renaming I.m to k
+interface I{
+	void k();
+}
+interface I2{
+	void m();
+	void k();
+	
+}
+class A{
+}
+class B extends A implements I{
+public void k(){}
+}
+class C extends A implements I2{
+public void m(){}
+public void k(){}
+
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test42/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test42/in/A.java
new file mode 100644
index 0000000..1215395
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test42/in/A.java
@@ -0,0 +1,17 @@
+package p;
+//renaming I.m to k
+interface I{
+	void m();
+}
+interface I2{
+	void m();
+}
+class A{
+public void m(){}
+}
+class B extends A implements I{
+public void m(){}
+}
+class C extends A implements I2{
+public void m(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test42/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test42/out/A.java
new file mode 100644
index 0000000..c0a9e5b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test42/out/A.java
@@ -0,0 +1,17 @@
+package p;
+//renaming I.m to k
+interface I{
+	void k();
+}
+interface I2{
+	void k();
+}
+class A{
+public void k(){}
+}
+class B extends A implements I{
+public void k(){}
+}
+class C extends A implements I2{
+public void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test43/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test43/in/A.java
new file mode 100644
index 0000000..c210562
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test43/in/A.java
@@ -0,0 +1,12 @@
+//renaming I.m to k
+package p;
+interface I {
+	void m();
+}
+class Test{
+	void k(){
+	}
+}
+class C implements I{
+	public void m(){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test43/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test43/out/A.java
new file mode 100644
index 0000000..3945ff4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test43/out/A.java
@@ -0,0 +1,12 @@
+//renaming I.m to k
+package p;
+interface I {
+	void k();
+}
+class Test{
+	void k(){
+	}
+}
+class C implements I{
+	public void k(){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test44/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test44/in/A.java
new file mode 100644
index 0000000..df5f328
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test44/in/A.java
@@ -0,0 +1,23 @@
+//renaming I.m to k
+package p;
+interface I {
+	void m();
+}
+interface J{
+	void m();
+}
+interface J2 extends J{
+	void m();
+}
+
+class A{
+	public void m(){};
+}
+class C extends A implements I, J{
+	public void m(){};
+}
+class Test{
+	void k(){
+	
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test44/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test44/out/A.java
new file mode 100644
index 0000000..3032211
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test44/out/A.java
@@ -0,0 +1,23 @@
+//renaming I.m to k
+package p;
+interface I {
+	void k();
+}
+interface J{
+	void k();
+}
+interface J2 extends J{
+	void k();
+}
+
+class A{
+	public void k(){};
+}
+class C extends A implements I, J{
+	public void k(){};
+}
+class Test{
+	void k(){
+	
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test45/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test45/in/A.java
new file mode 100644
index 0000000..27ca176
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test45/in/A.java
@@ -0,0 +1,20 @@
+package p;
+//renaming I.m to k
+interface I {
+void m();
+}
+class C1 implements I{
+	public void m(){};
+}
+class D{
+	void h(){
+		I a= new C1();
+		a.m();
+	}
+}
+class NotRel{
+	public void m(){};
+	void f(){
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test45/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test45/out/A.java
new file mode 100644
index 0000000..af2fc07
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test45/out/A.java
@@ -0,0 +1,20 @@
+package p;
+//renaming I.m to k
+interface I {
+void k();
+}
+class C1 implements I{
+	public void k(){};
+}
+class D{
+	void h(){
+		I a= new C1();
+		a.k();
+	}
+}
+class NotRel{
+	public void m(){};
+	void f(){
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test46/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test46/in/A.java
new file mode 100644
index 0000000..c21e729
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test46/in/A.java
@@ -0,0 +1,21 @@
+//nor ref update
+package p;
+//renaming I.m to k
+interface I {
+void m();
+}
+class C1 implements I{
+	public void m(){};
+}
+class D{
+	void h(){
+		I a= new C1();
+		a.m();
+	}
+}
+class NotRel{
+	public void m(){};
+	void f(){
+		m();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test46/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test46/out/A.java
new file mode 100644
index 0000000..65d6ceb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test46/out/A.java
@@ -0,0 +1,21 @@
+//nor ref update

+package p;

+//renaming I.m to k

+interface I {

+void k();

+}

+class C1 implements I{

+	public void k(){};

+}

+class D{

+	void h(){

+		I a= new C1();

+		a.m();

+	}

+}

+class NotRel{

+	public void m(){};

+	void f(){

+		m();

+	}

+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test47/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test47/in/A.java
new file mode 100644
index 0000000..2c113e2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test47/in/A.java
@@ -0,0 +1,14 @@
+package p;
+//renaming I.m to k
+interface I {
+	void m();
+}
+class AQ implements I{
+	public void m(){}
+}
+
+class AQE extends AQ{
+	public void m(){
+		super.m();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test47/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test47/out/A.java
new file mode 100644
index 0000000..123757e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test47/out/A.java
@@ -0,0 +1,14 @@
+package p;
+//renaming I.m to k
+interface I {
+	void k();
+}
+class AQ implements I{
+	public void k(){}
+}
+
+class AQE extends AQ{
+	public void k(){
+		super.k();
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test5/in/A.java
new file mode 100644
index 0000000..b85dfa1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test5/in/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+class B implements I{
+	public void m(){};
+} 
+class A extends B{
+	public void m(){};
+}
+interface I {
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test5/out/A.java
new file mode 100644
index 0000000..360aac9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test5/out/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+class B implements I{
+	public void k(){};
+} 
+class A extends B{
+	public void k(){};
+}
+interface I {
+	void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test6/in/A.java
new file mode 100644
index 0000000..67da87a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test6/in/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+class B implements I{
+	public void m(){};
+} 
+class A extends B implements I{
+	public void m(){};
+}
+interface I {
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test6/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test6/out/A.java
new file mode 100644
index 0000000..a75f6bd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test6/out/A.java
@@ -0,0 +1,11 @@
+//renaming I.m to k
+package p;
+class B implements I{
+	public void k(){};
+} 
+class A extends B implements I{
+	public void k(){};
+}
+interface I {
+	void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test7/in/A.java
new file mode 100644
index 0000000..116b6bf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test7/in/A.java
@@ -0,0 +1,8 @@
+//renaming I.m to k
+package p;
+interface I {
+	void m();
+}
+interface I2 extends I{
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test7/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test7/out/A.java
new file mode 100644
index 0000000..fb57224
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/test7/out/A.java
@@ -0,0 +1,8 @@
+//renaming I.m to k
+package p;
+interface I {
+	void k();
+}
+interface I2 extends I{
+	void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation0/in/A.java
new file mode 100644
index 0000000..ca6eb1e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation0/in/A.java
@@ -0,0 +1,17 @@
+package p;
+
+/**
+ * @see #name()
+ * @see I#name()
+ * @see p.I#name()
+ */
+@I(name="X")
+@interface I {
+    @I()
+    String name() default IDefault.NAME;
+    
+    @I
+    interface IDefault {
+        public @I(name=IDefault.NAME) final String NAME= "Me";
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation0/out/A.java
new file mode 100644
index 0000000..287daf3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation0/out/A.java
@@ -0,0 +1,17 @@
+package p;
+
+/**
+ * @see #ident()
+ * @see I#ident()
+ * @see p.I#ident()
+ */
+@I(ident="X")
+@interface I {
+    @I()
+    String ident() default IDefault.NAME;
+    
+    @I
+    interface IDefault {
+        public @I(ident=IDefault.NAME) final String NAME= "Me";
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation1/in/A.java
new file mode 100644
index 0000000..41c5bb2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation1/in/A.java
@@ -0,0 +1,23 @@
+package p;
+
+class A {
+	public static final int value= 12;
+	
+	@I
+	boolean f1;
+	@I(1)
+	boolean f2;
+	@I(value)
+	boolean f3;
+	@I(value=1)
+	boolean f4;
+	@I(value=1, x=2)
+	boolean f5;
+	@I(x=2)
+	boolean f6;
+}
+
+@interface I {
+    int x() default 0;
+    int value() default 0;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation1/out/A.java
new file mode 100644
index 0000000..50845a6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation1/out/A.java
@@ -0,0 +1,23 @@
+package p;
+
+class A {
+	public static final int value= 12;
+	
+	@I
+	boolean f1;
+	@I(number = 1)
+	boolean f2;
+	@I(number = value)
+	boolean f3;
+	@I(number=1)
+	boolean f4;
+	@I(number=1, x=2)
+	boolean f5;
+	@I(x=2)
+	boolean f6;
+}
+
+@interface I {
+    int x() default 0;
+    int number() default 0;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation2/in/A.java
new file mode 100644
index 0000000..72cc8e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation2/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+@I(thing="Description")
+@interface I {
+    String thing(); // rename to "value"
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation2/out/A.java
new file mode 100644
index 0000000..88d49c9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation2/out/A.java
@@ -0,0 +1,6 @@
+package p;
+
+@I(value="Description")
+@interface I {
+    String value(); // rename to "value"
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation3/in/A.java
new file mode 100644
index 0000000..9d61c4d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation3/in/A.java
@@ -0,0 +1,15 @@
+package p;
+
+/**
+ * @see I#value()
+ */
+class A {
+    int getIofI() {
+        I i= I.class.getAnnotation(I.class);
+        return i.value();
+    }
+}
+
+@interface I {
+    int value();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation3/out/A.java
new file mode 100644
index 0000000..97d9028
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation3/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+/**
+ * @see I#num()
+ */
+class A {
+    int getIofI() {
+        I i= I.class.getAnnotation(I.class);
+        return i.num();
+    }
+}
+
+@interface I {
+    int num();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation4/in/A.java
new file mode 100644
index 0000000..4b25d1a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation4/in/A.java
@@ -0,0 +1,19 @@
+package p;
+
+class A<E> {
+    @I(12)
+    @interface I {
+        @I(value=13)
+        int value();
+    }
+    
+    /**
+     * @see I#value()
+     */
+    class Ref {
+        int getIofI() {
+            I i= I.class.getAnnotation(I.class);
+            return i.value();
+        }
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation4/out/A.java
new file mode 100644
index 0000000..81863bd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testAnnotation4/out/A.java
@@ -0,0 +1,19 @@
+package p;
+
+class A<E> {
+    @I(num = 12)
+    @interface I {
+        @I(num=13)
+        int num();
+    }
+    
+    /**
+     * @see I#num()
+     */
+    class Ref {
+        int getIofI() {
+            I i= I.class.getAnnotation(I.class);
+            return i.num();
+        }
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate01/in/A.java
new file mode 100644
index 0000000..2f22579
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate01/in/A.java
@@ -0,0 +1,7 @@
+package p;
+
+public interface I {
+	
+	public void m();
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate01/out/A.java
new file mode 100644
index 0000000..e8455f7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate01/out/A.java
@@ -0,0 +1,12 @@
+package p;
+
+public interface I {
+	
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	public void m();
+
+	public void k();
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate02/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate02/in/A.java
new file mode 100644
index 0000000..f16ffa9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate02/in/A.java
@@ -0,0 +1,12 @@
+package p;
+
+public interface I {
+	public void m();
+}
+
+interface B extends I {
+}
+
+interface C extends B {
+	public void m();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate02/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate02/out/A.java
new file mode 100644
index 0000000..bbe4750
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testDelegate02/out/A.java
@@ -0,0 +1,22 @@
+package p;
+
+public interface I {
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	public void m();
+
+	public void k();
+}
+
+interface B extends I {
+}
+
+interface C extends B {
+	/**
+	 * @deprecated Use {@link #k()} instead
+	 */
+	public void m();
+
+	public void k();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail0/in/A.java
new file mode 100644
index 0000000..c3d2d6b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail0/in/A.java
@@ -0,0 +1,9 @@
+//can't rename I.m to k
+package p;
+interface I{
+	void m();
+}
+class C implements I{
+	public void m(){}
+	public void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail1/in/A.java
new file mode 100644
index 0000000..7d763a1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail1/in/A.java
@@ -0,0 +1,6 @@
+//can't rename I.m to k
+package p;
+interface I{
+	void m();
+	void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail10/in/A.java
new file mode 100644
index 0000000..9c9d766
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail10/in/A.java
@@ -0,0 +1,11 @@
+package p;
+//renaming I.m would require renaming a native method
+class A implements I{
+	public void m(){}
+}
+class B extends A{
+	public native void m();
+}
+interface I{
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail11/in/A.java
new file mode 100644
index 0000000..ae2f635
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail11/in/A.java
@@ -0,0 +1,11 @@
+package p;
+//can't rename I.m to k - defined in subclass
+class A implements I{
+	public void m(){}
+}
+class B extends A{
+	public private void k(){}
+}
+interface I{
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail12/in/A.java
new file mode 100644
index 0000000..824918a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail12/in/A.java
@@ -0,0 +1,11 @@
+package p;
+//can't rename m to k - defined in subclass
+class A implements I{
+	public void m(){}
+}
+class B extends A{
+	public void k(){}
+}
+interface I{
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail13/in/A.java
new file mode 100644
index 0000000..0ee357b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail13/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//can't rename m to k - defined in subclass
+class A implements I{
+	public void m(){
+	}
+}
+class B extends A{
+	static void k(){
+	}
+}
+interface I{
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail14/in/A.java
new file mode 100644
index 0000000..3e0eeed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail14/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//can't rename m to k - defined in subclass
+class A implements I{
+	public void m(){
+	}
+}
+class B extends A{
+	private static void k(){
+	}
+}
+interface I{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail15/in/A.java
new file mode 100644
index 0000000..b921f19
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail15/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//can't rename A.m to k - defined in superclass
+class B {
+	void k(){
+	}
+}
+class A extends B implements I{
+	public void m(){
+	}
+}
+interface I{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail16/in/A.java
new file mode 100644
index 0000000..2ad70f1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail16/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//can't rename A.m to k - defined in superclass
+class B {
+	static void k(){
+	}
+}
+class A extends B implements I{
+	public void m(){
+	}
+}
+interface I{
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail17/in/A.java
new file mode 100644
index 0000000..c4a3e84
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail17/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//can't rename A.m to k - defined in superclass
+class B {
+	void k(){
+	}
+}
+class A extends B implements I{
+	public void m(){
+	}
+}
+interface I{
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail18/in/A.java
new file mode 100644
index 0000000..1eddcad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail18/in/A.java
@@ -0,0 +1,9 @@
+package p;
+//can't rename I.m to k - duplicate
+interface I {
+	void m();
+}
+class B implements I{
+	public void m(){}
+	private int k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail19/in/A.java
new file mode 100644
index 0000000..3b7102c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail19/in/A.java
@@ -0,0 +1,10 @@
+package p;
+//can't rename A.m to k - duplicate
+class A implements I{
+	static void k(){}
+	public void m(){
+	}
+}
+interface I{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail20/in/A.java
new file mode 100644
index 0000000..e19b316
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail20/in/A.java
@@ -0,0 +1,11 @@
+package p;
+//can't rename A.m - declared in superclass
+class B {
+	public native void m();
+}
+class A extends B implements I{
+	public void m(){}
+}
+interface I{
+	void m();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail21/in/A.java
new file mode 100644
index 0000000..3d78d9c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail21/in/A.java
@@ -0,0 +1,15 @@
+//can't rename A.m to k
+package p;
+public class A implements I{
+	public void m(String m){
+		System.out.println("A");
+	}
+}
+class B extends A{
+	public void k(Object m){
+		System.out.println("B");
+	}
+}
+interface I{
+void m(String k);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail22/in/A.java
new file mode 100644
index 0000000..f295f57
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail22/in/A.java
@@ -0,0 +1,15 @@
+//can't rename A.m to k
+package p;
+public class A implements I{
+	public void m(Object m){
+		System.out.println("A");
+	}
+}
+class B extends A{
+	public void k(String m){
+		System.out.println("B");
+	}
+}
+interface I{
+void m(Object s);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail23/in/A.java
new file mode 100644
index 0000000..32b8728
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail23/in/A.java
@@ -0,0 +1,4 @@
+package p;
+interface I{
+	String toString();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail24/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail24/in/A.java
new file mode 100644
index 0000000..694796b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail24/in/A.java
@@ -0,0 +1,11 @@
+package p;
+//can't rename I.m to k
+class B{
+	public void k(){}
+}
+class A extends B implements I{
+	public void m(){}
+}
+interface I{
+	abstract void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail25/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail25/in/A.java
new file mode 100644
index 0000000..05bcab4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail25/in/A.java
@@ -0,0 +1,18 @@
+//can't rename I.m to k
+package p;
+interface I{
+void m();
+}
+class A{
+public void m(){};
+}
+class B1 extends A implements J{
+		public void k(){}
+}
+class B2 extends A implements I{
+
+}
+interface J{
+void m();
+void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail26/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail26/in/A.java
new file mode 100644
index 0000000..0e4124e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail26/in/A.java
@@ -0,0 +1,19 @@
+//can't rename I.m to k
+package p;
+interface I{
+void m();
+}
+class A{
+public void m(){};
+}
+class B1 extends A implements J{
+}
+class B2 extends A implements I{
+}
+interface J{
+void m();
+}
+class C implements J{
+public void m(){};
+public void k(){};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail27/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail27/in/A.java
new file mode 100644
index 0000000..7d8be81
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail27/in/A.java
@@ -0,0 +1,19 @@
+package p;
+interface I{
+void m();
+}
+class A implements I, J{
+public void m(){};
+}
+interface J{
+void m();
+}
+class B implements J, K{
+public void m(){};
+public void k(){};
+
+}
+interface K{
+void m();
+void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail28/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail28/in/A.java
new file mode 100644
index 0000000..4975fe7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail28/in/A.java
@@ -0,0 +1,25 @@
+//can't rename I.m to k
+package p;
+interface I{
+void m();
+}
+class A1 implements I, I1{
+public void m(){}
+}
+interface I1{
+void m();
+}
+class A2 implements I1, I2{
+public void m(){}
+}
+interface I2{
+void m();
+}
+class A3 implements I3, I2{
+public void m(){}
+public void k(){}
+}
+interface I3{
+void m();
+void k();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail29/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail29/in/A.java
new file mode 100644
index 0000000..0832d75
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail29/in/A.java
@@ -0,0 +1,14 @@
+//can't rename I.m to k
+package p;
+interface I{
+void m();
+}
+class A{
+public void m(){}
+}
+class B1 extends A implements I{
+}
+class B2 extends A {
+public void m(){}
+public void k(){}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail3/in/A.java
new file mode 100644
index 0000000..0dd7ffe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail3/in/A.java
@@ -0,0 +1,9 @@
+//can't rename I.m to k
+package p;
+interface I{
+	void m();
+}
+class C implements I{
+	public void m();
+	public void k();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail30/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail30/in/A.java
new file mode 100644
index 0000000..9be82b8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail30/in/A.java
@@ -0,0 +1,7 @@
+//can't rename A.toString
+package p;
+interface I{
+	public java.lang.String toString();
+}
+class A implements I{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail31/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail31/in/A.java
new file mode 100644
index 0000000..f77d7bd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail31/in/A.java
@@ -0,0 +1,8 @@
+//can't rename A.toString
+package p;
+interface I{
+	public String toString();
+}
+class A implements I{
+	public java.lang.String toString();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail32/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail32/in/A.java
new file mode 100644
index 0000000..266de81
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail32/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to toString
+//see the spec: 9.2
+package p;
+interface I{
+	void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail33/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail33/in/A.java
new file mode 100644
index 0000000..7f62c76
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail33/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to toString
+//see the spec: 9.2
+package p;
+interface I{
+	String m() throws Exception;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail34/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail34/in/A.java
new file mode 100644
index 0000000..acdbe6a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail34/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to equals
+//see the lang spec: 9.2
+package p;
+interface I{
+	void m(Object o);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail35/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail35/in/A.java
new file mode 100644
index 0000000..49acc1a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail35/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to equals
+//see the lang spec: 9.2
+package p;
+interface I{
+	void m(java.lang.Object o);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail36/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail36/in/A.java
new file mode 100644
index 0000000..66c4eb3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail36/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to getClass
+//see the lang spec: 9.2
+package p;
+interface I{
+	int m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail37/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail37/in/A.java
new file mode 100644
index 0000000..85bfa66
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail37/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to hashCode
+//see the lang spec: 9.2
+package p;
+interface I{
+	String m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail38/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail38/in/A.java
new file mode 100644
index 0000000..95dfb37
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail38/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to notify
+//see the lang spec: 9.2
+package p;
+interface I{
+	String m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail39/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail39/in/A.java
new file mode 100644
index 0000000..41a77fa
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail39/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to notifyAll
+//see the lang spec: 9.2
+package p;
+interface I{
+	String m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail4/in/A.java
new file mode 100644
index 0000000..eaeb936
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail4/in/A.java
@@ -0,0 +1,11 @@
+//can't rename I.m to k
+package p;
+interface I{
+	void m();
+}
+class C1 {
+	public void k(){}
+}
+class C2 extends C1 implements I{
+	public void m(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail40/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail40/in/A.java
new file mode 100644
index 0000000..4a86f82
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail40/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to wait
+//see the lang spec: 9.2
+package p;
+interface I{
+	String m(long timeout, int nanos);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail41/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail41/in/A.java
new file mode 100644
index 0000000..4a022be
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail41/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to wait
+//see the lang spec: 9.2
+package p;
+interface I{
+	String m(long timeout) throws InterruptedException;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail42/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail42/in/A.java
new file mode 100644
index 0000000..d9c9ece
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail42/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to wait
+//see the lang spec: 9.2
+package p;
+interface I{
+	String m() throws InterruptedException;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail43/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail43/in/A.java
new file mode 100644
index 0000000..0b159e6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail43/in/A.java
@@ -0,0 +1,6 @@
+//can't rename m to wait
+//see the lang spec: 9.2
+package p;
+interface I{
+	String m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail44/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail44/in/A.java
new file mode 100644
index 0000000..0a21f10
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail44/in/A.java
@@ -0,0 +1,8 @@
+//renaming I.m to k
+package p;
+interface I extends I2{
+void m();
+}
+interface I2{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail45/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail45/in/A.java
new file mode 100644
index 0000000..57d503f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail45/in/A.java
@@ -0,0 +1,10 @@
+package p;
+interface J{
+void m();
+}
+interface I extends J{
+void m();
+}
+interface I1 extends J{
+void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail5/in/A.java
new file mode 100644
index 0000000..ab81c78
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail5/in/A.java
@@ -0,0 +1,11 @@
+//can't rename I.m to k
+package p;
+interface I{
+	void m();
+}
+class C1 {
+	static void k(){}
+}
+class C2 extends C1 implements I{
+	public void m(){}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail6/in/A.java
new file mode 100644
index 0000000..5e1ee21
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail6/in/A.java
@@ -0,0 +1,11 @@
+//can't rename I.m to k
+package p;
+interface I{
+	void m();
+}
+class C1 {
+	static void k(){}
+}
+abstract class C2 extends C1 implements I{
+	abstract public void m();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail7/in/A.java
new file mode 100644
index 0000000..623d316
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail7/in/A.java
@@ -0,0 +1,11 @@
+package p;
+//can't rename I.m to k
+abstract class B{
+	abstract void k();
+}
+class A extends B implements I{
+	public void m(){}
+}
+interface I{
+	public void m();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail8/in/A.java
new file mode 100644
index 0000000..b0e2291
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail8/in/A.java
@@ -0,0 +1,11 @@
+package p;
+//can't rename I.m to k
+class B{
+	public void k(int x){}
+}
+class A extends B implements I{
+	public void m(int f){}
+}
+interface I{
+	public void m(int y);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail9/in/A.java
new file mode 100644
index 0000000..25017e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testFail9/in/A.java
@@ -0,0 +1,13 @@
+package p;
+//can't rename m to k
+class C {
+	public void k(){}
+}
+class B extends C{
+}
+class A extends B implements I{
+	public void m(){}
+}
+interface I{
+	public void m();
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testGenerics01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testGenerics01/in/A.java
new file mode 100644
index 0000000..1bbaf5d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testGenerics01/in/A.java
@@ -0,0 +1,24 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @see #getXYZ(List)
+ */
+interface I {
+	Set<Set<Runnable>> getXYZ(List<Set<Runnable>> arg);
+}
+
+class Impl implements I {
+	public Set<Set<Runnable>> getXYZ(List<Set<Runnable>> arg) {
+		return null;
+	}
+}
+
+class User {
+	void call(I abc) {
+		Set<Set<Runnable>> s= abc.getXYZ(new ArrayList<Set<Runnable>>());
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testGenerics01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testGenerics01/out/A.java
new file mode 100644
index 0000000..7d77e87
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameMethodInInterface/testGenerics01/out/A.java
@@ -0,0 +1,24 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @see #zYXteg(List)
+ */
+interface I {
+	Set<Set<Runnable>> zYXteg(List<Set<Runnable>> arg);
+}
+
+class Impl implements I {
+	public Set<Set<Runnable>> zYXteg(List<Set<Runnable>> arg) {
+		return null;
+	}
+}
+
+class User {
+	void call(I abc) {
+		Set<Set<Runnable>> s= abc.zYXteg(new ArrayList<Set<Runnable>>());
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test0/in/A.java
new file mode 100644
index 0000000..6ee5fcc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test0/in/A.java
@@ -0,0 +1,19 @@
+package p;
+/**
+ * @see #f
+ * @see A#f
+ * @see B#f
+ */
+class A{
+	/**
+	 * @see #f
+	 */
+	int f;
+}
+
+class B{
+	/**
+	 * @see A#f
+	 */
+	int f;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test0/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test0/out/A.java
new file mode 100644
index 0000000..e8c6ae9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test0/out/A.java
@@ -0,0 +1,19 @@
+package p;
+/**
+ * @see #g
+ * @see A#g
+ * @see B#f
+ */
+class A{
+	/**
+	 * @see #g
+	 */
+	int g;
+}
+
+class B{
+	/**
+	 * @see A#g
+	 */
+	int f;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test1/in/A.java
new file mode 100644
index 0000000..f31ed22
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test1/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	protected int f;
+	void m(){
+		f++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test1/out/A.java
new file mode 100644
index 0000000..b31f55f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test1/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	protected int g;
+	void m(){
+		g++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test10/in/A.java
new file mode 100644
index 0000000..47d015c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test10/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	public A f;
+	public int k;
+	void m(){
+		for (int g= 0; g < 10; g++){
+		
+		}
+		f.k=0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test10/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test10/out/A.java
new file mode 100644
index 0000000..9701909
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test10/out/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	public A g;
+	public int k;
+	void m(){
+		for (int g= 0; g < 10; g++){
+		
+		}
+		g.k=0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test11/in/A.java
new file mode 100644
index 0000000..212d616
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test11/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	int f;
+}
+class B extends A{
+	A a;
+	void m(){
+		int g= a.f;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test11/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test11/out/A.java
new file mode 100644
index 0000000..4c6d120
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test11/out/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	int g;
+}
+class B extends A{
+	A a;
+	void m(){
+		int g= a.g;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test12/in/A.java
new file mode 100644
index 0000000..cedb240
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test12/in/A.java
@@ -0,0 +1,7 @@
+package p;
+public class A {
+	static int f= 0;
+	void m(){
+		A.f= 0; /**/
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test12/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test12/out/A.java
new file mode 100644
index 0000000..b62dcc2
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test12/out/A.java
@@ -0,0 +1,7 @@
+package p;
+public class A {
+	static int g= 0;
+	void m(){
+		A.g= 0; /**/
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test13/in/A.java
new file mode 100644
index 0000000..b2ef453
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test13/in/A.java
@@ -0,0 +1,7 @@
+package p;
+public class A {
+	static int f= 0;
+	void m(){
+		p.A.f= 0; /**/
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test13/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test13/out/A.java
new file mode 100644
index 0000000..83bd4f7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test13/out/A.java
@@ -0,0 +1,7 @@
+package p;
+public class A {
+	static int g= 0;
+	void m(){
+		p.A.g= 0; /**/
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test14/in/A.java
new file mode 100644
index 0000000..0fe2457
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test14/in/A.java
@@ -0,0 +1,8 @@
+//no ref update
+package p;
+public class A {
+	static int f= 0;
+	void m(){
+		p.A.f= 0; /**/
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test14/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test14/out/A.java
new file mode 100644
index 0000000..309aa0e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test14/out/A.java
@@ -0,0 +1,8 @@
+//no ref update
+package p;
+public class A {
+	static int g= 0;
+	void m(){
+		p.A.f= 0; /**/
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test15/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test15/in/A.java
new file mode 100644
index 0000000..aa68794
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test15/in/A.java
@@ -0,0 +1,13 @@
+//no ref update
+package p;
+public class A {
+	public int f= 0;
+	void m(){
+		f= 0; /**/
+	}
+}
+class B{
+	void m(){
+		new A().f= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test15/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test15/out/A.java
new file mode 100644
index 0000000..20f65e0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test15/out/A.java
@@ -0,0 +1,13 @@
+//no ref update
+package p;
+public class A {
+	public int g= 0;
+	void m(){
+		f= 0; /**/
+	}
+}
+class B{
+	void m(){
+		new A().f= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test16/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test16/in/A.java
new file mode 100644
index 0000000..62fd9d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test16/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	int f;
+	public int getF() {
+		return (this.f);
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test16/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test16/out/A.java
new file mode 100644
index 0000000..4e08471
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test16/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	int g;
+	public int getF() {
+		return (this.g);
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test17/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test17/in/A.java
new file mode 100644
index 0000000..f97cafd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test17/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	int f; // field f, or A.f
+	public int getF() {
+		return (this.f);
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test17/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test17/out/A.java
new file mode 100644
index 0000000..e486fdd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test17/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	int g; // field g, or A.g
+	public int getF() {
+		return (this.f);
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test18/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test18/in/A.java
new file mode 100644
index 0000000..1fc5e44
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test18/in/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	static int field;
+	static {
+		String doIt= "field"; //field
+		doIt= "A.field"; //A.field
+		doIt= "B. #field"; //B. #field
+		doIt= "p.A#field"; //p.A#field
+		String dont= "x.p.A#field"; //x.p.A#field
+		dont= "xp.A.field"; //xp.A.field
+		dont= "B.field"; //B.field
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test18/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test18/out/A.java
new file mode 100644
index 0000000..3bbb64e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test18/out/A.java
@@ -0,0 +1,13 @@
+package p;
+class A{
+	static int member;
+	static {
+		String doIt= "member"; //member
+		doIt= "A.member"; //A.member
+		doIt= "B. #member"; //B. #member
+		doIt= "p.A#member"; //p.A#member
+		String dont= "x.p.A#field"; //x.p.A#field
+		dont= "xp.A.field"; //xp.A.field
+		dont= "B.field"; //B.field
+	}	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test19/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test19/in/A.java
new file mode 100644
index 0000000..556f0f1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test19/in/A.java
@@ -0,0 +1,26 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+class A{
+	List<String> list= new ArrayList<String>();
+	
+	public List<String> getList() {
+		return list;
+	}
+	
+	public void setList(List<String> list) {
+		this.list= list;
+	}
+}
+
+class B {
+	static {
+		A a= new A();
+		a.setList(new LinkedList<String>());
+		List<String> list= a.getList();
+		list.addAll(a.list);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test19/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test19/out/A.java
new file mode 100644
index 0000000..7e20c16
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test19/out/A.java
@@ -0,0 +1,26 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+class A{
+	List<String> items= new ArrayList<String>();
+	
+	public List<String> getItems() {
+		return items;
+	}
+	
+	public void setItems(List<String> list) {
+		this.items= list;
+	}
+}
+
+class B {
+	static {
+		A a= new A();
+		a.setItems(new LinkedList<String>());
+		List<String> list= a.getItems();
+		list.addAll(a.items);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test2/in/A.java
new file mode 100644
index 0000000..ff87d50
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test2/in/A.java
@@ -0,0 +1,4 @@
+package p;
+interface A{
+	int f= 0;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test2/out/A.java
new file mode 100644
index 0000000..c083c1b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test2/out/A.java
@@ -0,0 +1,4 @@
+package p;
+interface A{
+	int g= 0;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test20/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test20/in/A.java
new file mode 100644
index 0000000..556f0f1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test20/in/A.java
@@ -0,0 +1,26 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+class A{
+	List<String> list= new ArrayList<String>();
+	
+	public List<String> getList() {
+		return list;
+	}
+	
+	public void setList(List<String> list) {
+		this.list= list;
+	}
+}
+
+class B {
+	static {
+		A a= new A();
+		a.setList(new LinkedList<String>());
+		List<String> list= a.getList();
+		list.addAll(a.list);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test20/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test20/out/A.java
new file mode 100644
index 0000000..c65e0ed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test20/out/A.java
@@ -0,0 +1,26 @@
+package p;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+class A{
+	List<String> items= new ArrayList<String>();
+	
+	public List<String> getList() {
+		return items;
+	}
+	
+	public void setList(List<String> list) {
+		this.items= list;
+	}
+}
+
+class B {
+	static {
+		A a= new A();
+		a.setList(new LinkedList<String>());
+		List<String> list= a.getList();
+		list.addAll(a.items);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test21/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test21/in/A.java
new file mode 100644
index 0000000..aad5385
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test21/in/A.java
@@ -0,0 +1,16 @@
+package p;
+
+
+enum A {
+	ONE(1), TWO(2), THREE(3)
+	;
+	
+	int fValue;
+	private A(int value) {
+		fValue= value;
+	}
+}
+
+class U {
+	int one= A.ONE.fValue;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test21/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test21/out/A.java
new file mode 100644
index 0000000..e17a4f1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test21/out/A.java
@@ -0,0 +1,16 @@
+package p;
+
+
+enum A {
+	ONE(1), TWO(2), THREE(3)
+	;
+	
+	int fOrdinal;
+	private A(int value) {
+		fOrdinal= value;
+	}
+}
+
+class U {
+	int one= A.ONE.fOrdinal;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test22/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test22/in/A.java
new file mode 100644
index 0000000..58f65a5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test22/in/A.java
@@ -0,0 +1,27 @@
+package p;
+
+class A<T>{
+	T tee;
+	
+	public T getTee() {
+		return tee;
+	}
+	
+	public void setTee(T t) {
+		tee= t;
+	}
+}
+
+class B {
+	static {
+		A a= new A();
+		Object o= a.tee;
+		
+		A<Number> an= new A<Number>();
+		an.setTee(new Double(1.3d));
+		
+		A<? extends Number> at= new A<Integer>();
+		Number tee=at.getTee();
+		at.setTee(null);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test22/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test22/out/A.java
new file mode 100644
index 0000000..ba15fef
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test22/out/A.java
@@ -0,0 +1,27 @@
+package p;
+
+class A<T>{
+	T thing;
+	
+	public T getThing() {
+		return thing;
+	}
+	
+	public void setThing(T t) {
+		thing= t;
+	}
+}
+
+class B {
+	static {
+		A a= new A();
+		Object o= a.thing;
+		
+		A<Number> an= new A<Number>();
+		an.setThing(new Double(1.3d));
+		
+		A<? extends Number> at= new A<Integer>();
+		Number tee=at.getThing();
+		at.setThing(null);
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test23/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test23/in/A.java
new file mode 100644
index 0000000..a2b00fa
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test23/in/A.java
@@ -0,0 +1,15 @@
+package p;
+
+class A {
+    enum Enum {
+        ONE;
+    }
+    
+    Enum f;
+    public Enum getF() {
+        return f;
+    }
+    public void setF(Enum f) {
+        this.f = f;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test23/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test23/out/A.java
new file mode 100644
index 0000000..2bd494e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test23/out/A.java
@@ -0,0 +1,15 @@
+package p;
+
+class A {
+    enum Enum {
+        ONE;
+    }
+    
+    Enum g;
+    public Enum getG() {
+        return g;
+    }
+    public void setG(Enum f) {
+        this.g = f;
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test3/in/A.java
new file mode 100644
index 0000000..8ae7bb8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test3/in/A.java
@@ -0,0 +1,23 @@
+package p;
+/**
+ * @see #f
+ * @see A#f
+ * @see p.A#f
+ * @see B#f
+ */
+class A{
+	protected int f;
+	void m(){
+		f++;
+	}
+}
+/**
+ * @see #f
+ */
+class B{
+	A a;
+	protected int f;
+	void m(){
+		a.f= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test3/out/A.java
new file mode 100644
index 0000000..38b1d21
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test3/out/A.java
@@ -0,0 +1,23 @@
+package p;
+/**
+ * @see #g
+ * @see A#g
+ * @see p.A#g
+ * @see B#f
+ */
+class A{
+	protected int g;
+	void m(){
+		g++;
+	}
+}
+/**
+ * @see #f
+ */
+class B{
+	A a;
+	protected int f;
+	void m(){
+		a.g= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test4/in/A.java
new file mode 100644
index 0000000..96cfc37
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test4/in/A.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+	protected int f;
+	void m(){
+		f++;
+	}
+}
+class B extends A{
+	void m(){
+		f= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test4/out/A.java
new file mode 100644
index 0000000..700b2f6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test4/out/A.java
@@ -0,0 +1,12 @@
+package p;
+class A{
+	protected int g;
+	void m(){
+		g++;
+	}
+}
+class B extends A{
+	void m(){
+		g= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test5/in/A.java
new file mode 100644
index 0000000..f6469d5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test5/in/A.java
@@ -0,0 +1,18 @@
+package p;
+class A{
+	protected int f;
+	void m(){
+		f++;
+	}
+}
+
+class AA extends A{
+	protected int f;
+}
+
+class B{
+	A a;
+	void m(){
+		a.f= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test5/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test5/out/A.java
new file mode 100644
index 0000000..51818fd
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test5/out/A.java
@@ -0,0 +1,18 @@
+package p;
+class A{
+	protected int g;
+	void m(){
+		g++;
+	}
+}
+
+class AA extends A{
+	protected int f;
+}
+
+class B{
+	A a;
+	void m(){
+		a.g= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test6/in/A.java
new file mode 100644
index 0000000..6e60f89
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test6/in/A.java
@@ -0,0 +1,22 @@
+package p;
+class A{
+	protected int f;
+	void m(){
+		f++;
+	}
+}
+
+class AA extends A{
+	protected int f;
+}
+
+class B{
+	A a;
+	AA b;
+	A ab= new AA();
+	void m(){
+		a.f= 0;
+		b.f= 0;
+		ab.f= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test6/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test6/out/A.java
new file mode 100644
index 0000000..d730014
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test6/out/A.java
@@ -0,0 +1,22 @@
+package p;
+class A{
+	protected int g;
+	void m(){
+		g++;
+	}
+}
+
+class AA extends A{
+	protected int f;
+}
+
+class B{
+	A a;
+	AA b;
+	A ab= new AA();
+	void m(){
+		a.g= 0;
+		b.f= 0;
+		ab.g= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test7/in/A.java
new file mode 100644
index 0000000..7553eba
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test7/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	int f;
+	void m(int g){
+		this.f= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test7/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test7/out/A.java
new file mode 100644
index 0000000..d332730
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test7/out/A.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	int g;
+	void m(int g){
+		this.g= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test8/in/A.java
new file mode 100644
index 0000000..97e3a36
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test8/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	public A f;
+	public int k;
+	void m(){
+		f.f.f.k=0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test8/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test8/out/A.java
new file mode 100644
index 0000000..83a958b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test8/out/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	public A g;
+	public int k;
+	void m(){
+		g.g.g.k=0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test9/in/A.java
new file mode 100644
index 0000000..5c15dcf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test9/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	public A f;
+	public int k;
+	void m(){
+		{
+			int g;
+		}
+		f.k=0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test9/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test9/out/A.java
new file mode 100644
index 0000000..92d20b8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/test9/out/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	public A g;
+	public int k;
+	void m(){
+		{
+			int g;
+		}
+		g.k=0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation1/in/A.java
new file mode 100644
index 0000000..11a2b93
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation1/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+@interface A {
+    int ZERO= 0;
+}
+
+class User {
+    int NULL= A.ZERO;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation1/out/A.java
new file mode 100644
index 0000000..c8175d1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation1/out/A.java
@@ -0,0 +1,9 @@
+package p;
+
+@interface A {
+    int ZORRO= 0;
+}
+
+class User {
+    int NULL= A.ZORRO;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation2/in/A.java
new file mode 100644
index 0000000..2236fcf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation2/in/A.java
@@ -0,0 +1,14 @@
+package p;
+
+@interface Outer {
+    int ZERO= 0;
+    @interface A {
+        int ZERO= 0;
+    }
+    String name() default "Z";
+}
+
+@Outer.A
+class User {
+    int NULL= Outer.A.ZERO;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation2/out/A.java
new file mode 100644
index 0000000..3af01d6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testAnnotation2/out/A.java
@@ -0,0 +1,14 @@
+package p;
+
+@interface Outer {
+    int ZERO= 0;
+    @interface A {
+        int ZORRO= 0;
+    }
+    String name() default "Z";
+}
+
+@Outer.A
+class User {
+    int NULL= Outer.A.ZORRO;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testBug5821/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testBug5821/in/A.java
new file mode 100644
index 0000000..90c971f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testBug5821/in/A.java
@@ -0,0 +1,10 @@
+package p;
+public class A {
+    public int test = 0;
+
+    public static void main(String[] args) {
+        A test = new A();
+
+        test.test = 1;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testBug5821/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testBug5821/out/A.java
new file mode 100644
index 0000000..8f2706a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testBug5821/out/A.java
@@ -0,0 +1,10 @@
+package p;
+public class A {
+    public int test1 = 0;
+
+    public static void main(String[] args) {
+        A test = new A();
+
+        test.test1 = 1;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate01/in/A.java
new file mode 100644
index 0000000..a687b44
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate01/in/A.java
@@ -0,0 +1,6 @@
+package p;
+
+class A {
+   
+	public static final String f= "FOO";
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate01/out/A.java
new file mode 100644
index 0000000..807a426
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate01/out/A.java
@@ -0,0 +1,10 @@
+package p;
+
+class A {
+   
+	public static final String g= "FOO";
+	/**
+	 * @deprecated Use {@link #g} instead
+	 */
+	public static final String f= g;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate02/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate02/in/A.java
new file mode 100644
index 0000000..4aab4b5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate02/in/A.java
@@ -0,0 +1,14 @@
+package p;
+
+class A {
+   
+	public String f;
+
+	public String getF() {
+		return f;
+	}
+
+	public void setF(String f) {
+		this.f = f;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate02/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate02/out/A.java
new file mode 100644
index 0000000..ecc8e52
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate02/out/A.java
@@ -0,0 +1,28 @@
+package p;
+
+class A {
+   
+	public String g;
+
+	/**
+	 * @deprecated Use {@link #getG()} instead
+	 */
+	public String getF() {
+		return getG();
+	}
+
+	public String getG() {
+		return g;
+	}
+
+	/**
+	 * @deprecated Use {@link #setG(String)} instead
+	 */
+	public void setF(String f) {
+		setG(f);
+	}
+
+	public void setG(String f) {
+		this.g = f;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate03/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate03/in/A.java
new file mode 100644
index 0000000..78d2c18
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate03/in/A.java
@@ -0,0 +1,11 @@
+package p;
+
+class A {
+   
+	public static final String f= "FOO";
+
+	public String getF() {
+		return f;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate03/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate03/out/A.java
new file mode 100644
index 0000000..a65480a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testDelegate03/out/A.java
@@ -0,0 +1,22 @@
+package p;
+
+class A {
+   
+	public static final String g= "FOO";
+	/**
+	 * @deprecated Use {@link #g} instead
+	 */
+	public static final String f= g;
+
+	/**
+	 * @deprecated Use {@link #getG()} instead
+	 */
+	public String getF() {
+		return getG();
+	}
+
+	public String getG() {
+		return g;
+	}
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/in/A.java
new file mode 100644
index 0000000..622c376
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/in/A.java
@@ -0,0 +1,4 @@
+package p;
+public enum A {
+	RED, GREEN, PINK // Color Different!
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/in/B.java
new file mode 100644
index 0000000..d5616d7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/in/B.java
@@ -0,0 +1,8 @@
+package test1;
+import p.A;
+public class B {
+	public void foo() {
+		A a= A.RED;
+		A a2= A.RED.RED.PINK;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/in/C.java
new file mode 100644
index 0000000..7166588
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/in/C.java
@@ -0,0 +1,7 @@
+import static p.A.*;
+import p.A;
+public class C {
+	public boolean foo() {
+		return RED == A.GREEN.RED;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/out/A.java
new file mode 100644
index 0000000..91f6845
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/out/A.java
@@ -0,0 +1,4 @@
+package p;
+public enum A {
+	REDDISH, GREEN, PINK // Color Different!
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/out/B.java
new file mode 100644
index 0000000..261047a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/out/B.java
@@ -0,0 +1,8 @@
+package test1;
+import p.A;
+public class B {
+	public void foo() {
+		A a= A.REDDISH;
+		A a2= A.REDDISH.REDDISH.PINK;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/out/C.java
new file mode 100644
index 0000000..315ca75
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumConst/out/C.java
@@ -0,0 +1,7 @@
+import static p.A.*;
+import p.A;
+public class C {
+	public boolean foo() {
+		return REDDISH == A.GREEN.REDDISH;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumField/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumField/in/A.java
new file mode 100644
index 0000000..5f1f7bf
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumField/in/A.java
@@ -0,0 +1,21 @@
+package p;
+
+enum A {
+    RED, GREEN, BLUE, YELLOW;
+    A buddy;
+    public A getBuddy() {
+        return buddy;
+    }
+    public void setBuddy(A b) {
+        buddy= b;
+    }
+}
+
+class User {
+    void m() {
+        A.RED.setBuddy(A.GREEN);
+        if (A.RED.getBuddy() == A.GREEN) {
+            A.GREEN.buddy= null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumField/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumField/out/A.java
new file mode 100644
index 0000000..f77f0fb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testEnumField/out/A.java
@@ -0,0 +1,21 @@
+package p;
+
+enum A {
+    RED, GREEN, BLUE, YELLOW;
+    A other;
+    public A getOther() {
+        return other;
+    }
+    public void setOther(A b) {
+        other= b;
+    }
+}
+
+class User {
+    void m() {
+        A.RED.setOther(A.GREEN);
+        if (A.RED.getOther() == A.GREEN) {
+            A.GREEN.other= null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail0/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail0/in/A.java
new file mode 100644
index 0000000..039339c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail0/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	int f;
+	private int g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail1/in/A.java
new file mode 100644
index 0000000..282d63c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail1/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	public int f;
+	public String g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail10/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail10/in/A.java
new file mode 100644
index 0000000..b1131d3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail10/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	public A f;
+	public int k;
+	void m(){
+		for (int g= 0; g < 10; g++){
+			f.k=0;
+		}
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail11/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail11/in/A.java
new file mode 100644
index 0000000..b263907
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail11/in/A.java
@@ -0,0 +1,14 @@
+package p;
+class A{
+	int f;
+	void m(){
+		{
+				int g;
+			{
+				{
+					int y= f + 0;
+				}
+			}
+		}	
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail12/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail12/in/A.java
new file mode 100644
index 0000000..36c9d0d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail12/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A{
+	int f;
+	void m(){
+		int g= f;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail13/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail13/in/A.java
new file mode 100644
index 0000000..b2eb79d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail13/in/A.java
@@ -0,0 +1,10 @@
+package p;
+class A{
+	int f;
+}
+class B extends A{
+	A a;
+	void m(){
+		int g= f;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail14/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail14/in/A.java
new file mode 100644
index 0000000..e09468d
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail14/in/A.java
@@ -0,0 +1,11 @@
+package p;
+class A{
+	int f;
+}
+class B extends A{
+	A a;
+	int m(){
+		int g;
+		return f;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail2/in/A.java
new file mode 100644
index 0000000..42161ad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail2/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	int f;
+	public static int g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail3/in/A.java
new file mode 100644
index 0000000..a887ae1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail3/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	protected int f;
+	private static int g;	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail4/in/A.java
new file mode 100644
index 0000000..e2e3c00
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail4/in/A.java
@@ -0,0 +1,5 @@
+package p;
+class A{
+	public static int f;
+	public Object g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail5/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail5/in/A.java
new file mode 100644
index 0000000..731bb0e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail5/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class B {
+	int g;
+	class A {
+		final int f= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail6/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail6/in/A.java
new file mode 100644
index 0000000..2efe7c7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail6/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	private int f;
+	class B {
+		public int g;
+	}
+}	
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail7/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail7/in/A.java
new file mode 100644
index 0000000..0ebc1c6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail7/in/A.java
@@ -0,0 +1,7 @@
+package p;
+class A {
+	int f;
+	void m(int g){
+		f= 0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail8/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail8/in/A.java
new file mode 100644
index 0000000..f841ee0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail8/in/A.java
@@ -0,0 +1,8 @@
+package p;
+class A{
+	int f;
+	void m(){
+		Object g;
+		f++;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail9/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail9/in/A.java
new file mode 100644
index 0000000..58b9cd4
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testFail9/in/A.java
@@ -0,0 +1,9 @@
+package p;
+class A{
+	public A f;
+	public int k;
+	void m(){
+		A g;
+		f.f.f.k=0;
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics1/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics1/in/A.java
new file mode 100644
index 0000000..3046a5f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics1/in/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class A<T> {
+    T f;
+}
+
+class B<E extends Number> extends A<E> {
+    E e= f;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics1/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics1/out/A.java
new file mode 100644
index 0000000..09fdbed
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics1/out/A.java
@@ -0,0 +1,9 @@
+package p;
+
+class A<T> {
+    T g;
+}
+
+class B<E extends Number> extends A<E> {
+    E e= g;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics2/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics2/in/A.java
new file mode 100644
index 0000000..02ec08e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics2/in/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A<T> {
+    T f;
+    
+    public T getF() {
+        return f;
+    }
+    
+    public void setF(T f) {
+        this.f = f;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics2/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics2/out/A.java
new file mode 100644
index 0000000..142dd1c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics2/out/A.java
@@ -0,0 +1,13 @@
+package p;
+
+class A<T> {
+    T g;
+    
+    public T getG() {
+        return g;
+    }
+    
+    public void setG(T f) {
+        this.g = f;
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics3/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics3/in/A.java
new file mode 100644
index 0000000..e012448
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics3/in/A.java
@@ -0,0 +1,22 @@
+package p;
+
+class A<T> {
+    T f;
+    
+    public T getF() {
+        return f;
+    }
+    
+    public void setF(T f) {
+        this.f = f;
+    }
+}
+
+class B<E extends Number> extends A<E> {
+    public E getF() {
+        return super.f;
+    }
+    public void setF(E f) {
+        super.setF(f);
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics3/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics3/out/A.java
new file mode 100644
index 0000000..85a987a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics3/out/A.java
@@ -0,0 +1,22 @@
+package p;
+
+class A<T> {
+    T g;
+    
+    public T getG() {
+        return g;
+    }
+    
+    public void setG(T f) {
+        this.g = f;
+    }
+}
+
+class B<E extends Number> extends A<E> {
+    public E getG() {
+        return super.g;
+    }
+    public void setG(E f) {
+        super.setG(f);
+    }
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics4/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics4/in/A.java
new file mode 100644
index 0000000..e363e35
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics4/in/A.java
@@ -0,0 +1,20 @@
+package p;
+
+class A<E extends Number> {
+    private int count;
+
+    public int getCount() {
+        return count;
+    }
+
+    public void setCount(int c) {
+        count= c;
+    }
+    
+    void test() {
+        Integer i= getCount();
+        setCount(i);
+        new A<Double>().setCount(1);
+        i= new A<Number>().getCount();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics4/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics4/out/A.java
new file mode 100644
index 0000000..01063c9
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testGenerics4/out/A.java
@@ -0,0 +1,20 @@
+package p;
+
+class A<E extends Number> {
+    private int number;
+
+    public int getNumber() {
+        return number;
+    }
+
+    public void setNumber(int c) {
+        number= c;
+    }
+    
+    void test() {
+        Integer i= getNumber();
+        setNumber(i);
+        new A<Double>().setNumber(1);
+        i= new A<Number>().getNumber();
+    }
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/in/A.java
new file mode 100644
index 0000000..a21137a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/in/A.java
@@ -0,0 +1,10 @@
+package p;
+import org.eclipse.osgi.util.NLS;
+public class A extends NLS {
+	private static final String BUNDLE_NAME = "p.messages"; //$NON-NLS-1$
+	public static String f;
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, A.class);
+	}
+	private A() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/in/messages.properties b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/in/messages.properties
new file mode 100644
index 0000000..fba121a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/in/messages.properties
@@ -0,0 +1 @@
+f=a
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/out/A.java
new file mode 100644
index 0000000..c0938cc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/out/A.java
@@ -0,0 +1,10 @@
+package p;
+import org.eclipse.osgi.util.NLS;
+public class A extends NLS {
+	private static final String BUNDLE_NAME = "p.messages"; //$NON-NLS-1$
+	public static String g;
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, A.class);
+	}
+	private A() {}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/out/messages.properties b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/out/messages.properties
new file mode 100644
index 0000000..c866cff
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testRenameNLSAccessor01/out/messages.properties
@@ -0,0 +1 @@
+g=a
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/in/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/in/A.java
new file mode 100644
index 0000000..4405c91
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/in/A.java
@@ -0,0 +1,4 @@
+package p;
+public class A {
+    public static final double PI= Math.PI;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/in/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/in/B.java
new file mode 100644
index 0000000..11423de
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/in/B.java
@@ -0,0 +1,7 @@
+package test1;
+import static p.A.PI;
+public class B {
+	public void foo() {
+		double pi= PI;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/in/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/in/C.java
new file mode 100644
index 0000000..c893e3e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/in/C.java
@@ -0,0 +1,6 @@
+import static p.A.*;
+public class C {
+	public boolean foo() {
+		return Math.PI == PI;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/out/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/out/A.java
new file mode 100644
index 0000000..107886b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/out/A.java
@@ -0,0 +1,4 @@
+package p;
+public class A {
+    public static final double e= Math.PI;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/out/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/out/B.java
new file mode 100644
index 0000000..310c6bb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/out/B.java
@@ -0,0 +1,7 @@
+package test1;
+import static p.A.e;
+public class B {
+	public void foo() {
+		double pi= e;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/out/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/out/C.java
new file mode 100644
index 0000000..8369d62
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenameNonPrivateField/testStaticImport/out/C.java
@@ -0,0 +1,6 @@
+import static p.A.*;
+public class C {
+	public boolean foo() {
+		return Math.PI == e;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test0/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test0/in/r/A.java
new file mode 100644
index 0000000..889b397
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test0/in/r/A.java
@@ -0,0 +1,8 @@
+package r;
+/**
+ * This is in r.
+ * @see r
+ * @see r.A
+ * @see r.A#A()
+ */
+class A{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test0/out/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test0/out/p1/A.java
new file mode 100644
index 0000000..eac7aa1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test0/out/p1/A.java
@@ -0,0 +1,8 @@
+package p1;
+/**
+ * This is in r.
+ * @see p1
+ * @see p1.A
+ * @see p1.A#A()
+ */
+class A{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test1/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test1/in/r/A.java
new file mode 100644
index 0000000..362ea30
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test1/in/r/A.java
@@ -0,0 +1,4 @@
+package r;
+class A{
+	r.A a;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test1/out/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test1/out/p1/A.java
new file mode 100644
index 0000000..b0933c0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test1/out/p1/A.java
@@ -0,0 +1,4 @@
+package p1;
+class A{
+	p1.A a;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/in/fred/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/in/fred/A.java
new file mode 100644
index 0000000..4e91e5a
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/in/fred/A.java
@@ -0,0 +1,6 @@
+package fred;
+import r.*;
+class A{
+	r.A a;
+	A a1;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/in/r/A.java
new file mode 100644
index 0000000..5833a58
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/in/r/A.java
@@ -0,0 +1,4 @@
+package r;
+public class A{
+	r.A a;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/out/fred/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/out/fred/A.java
new file mode 100644
index 0000000..2fbde2b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/out/fred/A.java
@@ -0,0 +1,6 @@
+package fred;
+import p1.*;
+class A{
+	p1.A a;
+	A a1;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/out/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/out/p1/A.java
new file mode 100644
index 0000000..e4cf018
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test2/out/p1/A.java
@@ -0,0 +1,4 @@
+package p1;
+public class A{
+	p1.A a;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/in/fred/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/in/fred/A.java
new file mode 100644
index 0000000..bb332c0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/in/fred/A.java
@@ -0,0 +1,6 @@
+package fred;
+import r.r.*;
+class A{
+	r.r.B a;
+	A a1;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/in/r/r/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/in/r/r/B.java
new file mode 100644
index 0000000..8620e84
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/in/r/r/B.java
@@ -0,0 +1,4 @@
+package r.r;
+public class B{
+	r.r.B a;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/out/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/out/r/A.java
new file mode 100644
index 0000000..bbc81b5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/out/r/A.java
@@ -0,0 +1,6 @@
+package r;
+import r.r.*;
+class A{
+	r.r.B a;
+	A a1;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/out/r/r/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/out/r/r/B.java
new file mode 100644
index 0000000..8620e84
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test3/out/r/r/B.java
@@ -0,0 +1,4 @@
+package r.r;
+public class B{
+	r.r.B a;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/in/Textfile.txt b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/in/Textfile.txt
new file mode 100644
index 0000000..4316910
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/in/Textfile.txt
@@ -0,0 +1,13 @@
+r.p1.B
+r.p1.B.Q
+r.p1.Bla
+r.p1.q
+"r.p1.B"
+r.p1
+r.p1.
+
+a.r.p1.B
+rr.p1.B
+.r.p1.B
+r.p1p.B
+ r.p1
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/in/r/A.java
new file mode 100644
index 0000000..ebb7363
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/in/r/A.java
@@ -0,0 +1,2 @@
+package r;
+class C{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/in/r/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/in/r/p1/A.java
new file mode 100644
index 0000000..2878942
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/in/r/p1/A.java
@@ -0,0 +1,2 @@
+package r.p1;
+class A{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/out/Textfile.txt b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/out/Textfile.txt
new file mode 100644
index 0000000..7d8a052
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/out/Textfile.txt
@@ -0,0 +1,13 @@
+q.B
+q.B.Q
+q.Bla
+q.q
+"q.B"
+q
+q.
+
+a.r.p1.B
+rr.p1.B
+.r.p1.B
+r.p1p.B
+ q
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/out/q/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/out/q/A.java
new file mode 100644
index 0000000..5fbbe5c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/out/q/A.java
@@ -0,0 +1,2 @@
+package q;
+class A{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/out/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/out/r/A.java
new file mode 100644
index 0000000..ebb7363
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test4/out/r/A.java
@@ -0,0 +1,2 @@
+package r;
+class C{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test5/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test5/in/r/A.java
new file mode 100644
index 0000000..9307b7e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test5/in/r/A.java
@@ -0,0 +1,5 @@
+//no ref update
+package r;
+class A{
+	r.A d;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test5/out/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test5/out/p1/A.java
new file mode 100644
index 0000000..4860a3f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test5/out/p1/A.java
@@ -0,0 +1,5 @@
+//no ref update
+package p1;
+class A{
+	r.A d;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test6/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test6/in/r/A.java
new file mode 100644
index 0000000..460f1b7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test6/in/r/A.java
@@ -0,0 +1,5 @@
+//no ref update but update of textual match to r and "r"
+package r;
+class A{
+	r.A d;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test6/out/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test6/out/p1/A.java
new file mode 100644
index 0000000..0647bcc
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test6/out/p1/A.java
@@ -0,0 +1,5 @@
+//no ref update but update of textual match to p1 and "p1"
+package p1;
+class A{
+	r.A d;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/in/r/A.java
new file mode 100644
index 0000000..3607c70
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/in/r/A.java
@@ -0,0 +1,3 @@
+package r;
+class A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/in/r/s/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/in/r/s/B.java
new file mode 100644
index 0000000..484e858
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/in/r/s/B.java
@@ -0,0 +1,4 @@
+package r.s;
+
+public class B {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/out/q/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/out/q/A.java
new file mode 100644
index 0000000..0010960
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/out/q/A.java
@@ -0,0 +1,3 @@
+package q;
+class A {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/out/r/s/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/out/r/s/B.java
new file mode 100644
index 0000000..484e858
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test7/out/r/s/B.java
@@ -0,0 +1,4 @@
+package r.s;
+
+public class B {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test8/in/java/lang/reflect/Klass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test8/in/java/lang/reflect/Klass.java
new file mode 100644
index 0000000..e264c3b
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test8/in/java/lang/reflect/Klass.java
@@ -0,0 +1,5 @@
+package java.lang.reflect;
+
+public class Klass extends AccessibleObject implements Type {
+	Field f;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test8/out/nonjava/Klass.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test8/out/nonjava/Klass.java
new file mode 100644
index 0000000..756c436
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/test8/out/nonjava/Klass.java
@@ -0,0 +1,9 @@
+package nonjava;
+
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Field;
+import java.lang.reflect.Type;
+
+public class Klass extends AccessibleObject implements Type {
+	Field f;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail0/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail0/in/r/A.java
new file mode 100644
index 0000000..96dae97
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail0/in/r/A.java
@@ -0,0 +1,2 @@
+package r;
+class A{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail1/in/r/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail1/in/r/p1/A.java
new file mode 100644
index 0000000..2878942
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail1/in/r/p1/A.java
@@ -0,0 +1,2 @@
+package r.p1;
+class A{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail10/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail10/in/r/A.java
new file mode 100644
index 0000000..ebb7363
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail10/in/r/A.java
@@ -0,0 +1,2 @@
+package r;
+class C{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail10/in/r/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail10/in/r/p1/A.java
new file mode 100644
index 0000000..2878942
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail10/in/r/p1/A.java
@@ -0,0 +1,2 @@
+package r.p1;
+class A{}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail3/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail3/in/r/A.java
new file mode 100644
index 0000000..2cf2cac
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail3/in/r/A.java
@@ -0,0 +1,4 @@
+package r;
+class A{
+	native void f();
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail4/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail4/in/r/A.java
new file mode 100644
index 0000000..ac8b4bb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail4/in/r/A.java
@@ -0,0 +1,6 @@
+package r;
+class A{
+	class B{
+		native void f();
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail5/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail5/in/r/A.java
new file mode 100644
index 0000000..e2601f0
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail5/in/r/A.java
@@ -0,0 +1,7 @@
+package r;
+public class A{
+	public class B{
+		public static void main(String[] args){
+		}	
+	}
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail6/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail6/in/r/A.java
new file mode 100644
index 0000000..09f2187
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail6/in/r/A.java
@@ -0,0 +1,5 @@
+package r;
+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/RenamePackage/testFail7/in/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail7/in/p1/A.java
new file mode 100644
index 0000000..b6a96e7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail7/in/p1/A.java
@@ -0,0 +1,9 @@
+package p1;
+class B{
+	void m(AA fred){
+		r.A.length();
+	}
+}
+class AA{
+	static String A;
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail7/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail7/in/r/A.java
new file mode 100644
index 0000000..323bb3f
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail7/in/r/A.java
@@ -0,0 +1,4 @@
+package r;
+public class A{
+	public static int length(){return 42;};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail8/in/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail8/in/p1/A.java
new file mode 100644
index 0000000..e561724
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail8/in/p1/A.java
@@ -0,0 +1,10 @@
+package p1;
+import r.*;
+class B{
+	void m(){
+		r.A a;
+	}
+}
+class fred{
+	class A{};
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail8/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail8/in/r/A.java
new file mode 100644
index 0000000..5ce5e47
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail8/in/r/A.java
@@ -0,0 +1,3 @@
+package r;
+public class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail9/in/p1/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail9/in/p1/A.java
new file mode 100644
index 0000000..2c4fd17
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail9/in/p1/A.java
@@ -0,0 +1,4 @@
+package p1;
+class B{
+	native void m(p.A a);
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail9/in/r/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail9/in/r/A.java
new file mode 100644
index 0000000..5ce5e47
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testFail9/in/r/A.java
@@ -0,0 +1,3 @@
+package r;
+public class A{
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/in/my/MyA.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/in/my/MyA.java
new file mode 100644
index 0000000..2c464a8
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/in/my/MyA.java
@@ -0,0 +1,11 @@
+package my;
+
+
+import my.b.B;
+import my.a.ATest;
+import my.b.B;
+import my.a.ATest;
+import my.b.B;
+
+public class MyA {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/in/my/a/ATest.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/in/my/a/ATest.java
new file mode 100644
index 0000000..bd52230
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/in/my/a/ATest.java
@@ -0,0 +1,5 @@
+package my.a;
+
+public class ATest {
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/in/my/b/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/in/my/b/B.java
new file mode 100644
index 0000000..c5c84ad
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/in/my/b/B.java
@@ -0,0 +1,4 @@
+package my.b;
+
+public class B {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/out/your/MyA.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/out/your/MyA.java
new file mode 100644
index 0000000..ac8f585
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/out/your/MyA.java
@@ -0,0 +1,8 @@
+package your;
+
+
+import your.a.ATest;
+import your.b.B;
+
+public class MyA {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/out/your/a/ATest.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/out/your/a/ATest.java
new file mode 100644
index 0000000..68bdbca
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/out/your/a/ATest.java
@@ -0,0 +1,5 @@
+package your.a;
+
+public class ATest {
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/out/your/b/B.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/out/your/b/B.java
new file mode 100644
index 0000000..a70e651
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical01/out/your/b/B.java
@@ -0,0 +1,4 @@
+package your.b;
+
+public class B {
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical02/in/your/Y.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical02/in/your/Y.java
new file mode 100644
index 0000000..042c84c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical02/in/your/Y.java
@@ -0,0 +1,5 @@
+package your;
+
+public class Y {
+	
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical03/in/my/pack/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical03/in/my/pack/C.java
new file mode 100644
index 0000000..c5add02
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical03/in/my/pack/C.java
@@ -0,0 +1,13 @@
+package my.pack;
+public class C {
+/*
+my.pack
+my.pack.subpack
+my.pack2
+my.pack2.subpack
+not.my.pack.subpack
+notmy.pack.subpack
+notmy.pack2.subpack
+My.pack
+*/
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical03/out/your/pack/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical03/out/your/pack/C.java
new file mode 100644
index 0000000..20fa2b7
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchical03/out/your/pack/C.java
@@ -0,0 +1,13 @@
+package your.pack;
+public class C {
+/*
+your.pack
+your.pack.subpack
+your.pack2
+your.pack2.subpack
+not.my.pack.subpack
+notmy.pack.subpack
+notmy.pack2.subpack
+My.pack
+*/
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchicalDisabledImport/in/my/pack/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchicalDisabledImport/in/my/pack/C.java
new file mode 100644
index 0000000..ad598bb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchicalDisabledImport/in/my/pack/C.java
@@ -0,0 +1,7 @@
+package my.pack;
+
+import my.pack.C;
+//import my.Other;
+
+public class C {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchicalDisabledImport/out/your/pack/C.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchicalDisabledImport/out/your/pack/C.java
new file mode 100644
index 0000000..795dd39
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testHierarchicalDisabledImport/out/your/pack/C.java
@@ -0,0 +1,6 @@
+package your.pack;
+
+import your.pack.C;
+
+public class C {
+}
\ No newline at end of file
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/in/srcPrg/p/p/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/in/srcPrg/p/p/A.java
new file mode 100644
index 0000000..f8557b1
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/in/srcPrg/p/p/A.java
@@ -0,0 +1,7 @@
+package p.p; //p.p -> q
+/**
+ * @see p.p.A and subclasses
+ */
+public class A {
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/in/srcTest/p/p/ATest.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/in/srcTest/p/p/ATest.java
new file mode 100644
index 0000000..60ef000
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/in/srcTest/p/p/ATest.java
@@ -0,0 +1,6 @@
+package p.p;
+
+public class ATest {
+	A a; // is A unique in p.p?
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/in/srcTest/tests/AllTests.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/in/srcTest/tests/AllTests.java
new file mode 100644
index 0000000..4e391fe
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/in/srcTest/tests/AllTests.java
@@ -0,0 +1,12 @@
+package tests;
+
+import p.p.* /* p.p - textual ref */;
+
+/**
+ * The field {@link aTest aTest} has an {@link ATest#a}.
+ * @see p.p.ATest
+ */
+public class AllTests {
+	ATest aTest;
+	A a;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/out/srcPrg/q/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/out/srcPrg/q/A.java
new file mode 100644
index 0000000..581a023
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/out/srcPrg/q/A.java
@@ -0,0 +1,7 @@
+package q; //q -> q
+/**
+ * @see q.A and subclasses
+ */
+public class A {
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/out/srcTest/p/p/ATest.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/out/srcTest/p/p/ATest.java
new file mode 100644
index 0000000..a049da6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/out/srcTest/p/p/ATest.java
@@ -0,0 +1,8 @@
+package p.p;
+
+import q.A;
+
+public class ATest {
+	A a; // is A unique in q?
+
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/out/srcTest/tests/AllTests.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/out/srcTest/tests/AllTests.java
new file mode 100644
index 0000000..b3c8964
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots1/out/srcTest/tests/AllTests.java
@@ -0,0 +1,13 @@
+package tests;
+
+import p.p.ATest;
+import q.*;
+
+/**
+ * The field {@link aTest aTest} has an {@link ATest#a}.
+ * @see q.ATest
+ */
+public class AllTests {
+	ATest aTest;
+	A a;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcPrg/p/p/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcPrg/p/p/A.java
new file mode 100644
index 0000000..119ba1c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcPrg/p/p/A.java
@@ -0,0 +1,5 @@
+package p.p;
+
+public class A {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/p/p/ATest.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/p/p/ATest.java
new file mode 100644
index 0000000..1a94a1c
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/p/p/ATest.java
@@ -0,0 +1,12 @@
+package p.p;
+
+import p.p.*; //myself
+
+public class ATest {
+	A aFromOtherPackageFragment;
+	p.p.A aQualifiedFromNamesake;
+	
+	public void test1() {
+		TestHelper.log("x");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/p/p/TestHelper.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/p/p/TestHelper.java
new file mode 100644
index 0000000..e0d5861
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/p/p/TestHelper.java
@@ -0,0 +1,7 @@
+package p.p;
+import java.util.Date;
+public class TestHelper {
+	public static void log(String s) {
+		System.out.println(new Date() + ": " + s);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/tests/AllTests.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/tests/AllTests.java
new file mode 100644
index 0000000..982f144
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/tests/AllTests.java
@@ -0,0 +1,14 @@
+package tests;
+
+import p.p.*; //danger!
+
+import p.p.ATest;
+import p.p.A;
+
+public class AllTests {
+	ATest aTest;
+	p.p.ATest aQualifiedTest;
+
+	A a;
+	p.p.A aQualified;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/tests/QualifiedTests.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/tests/QualifiedTests.java
new file mode 100644
index 0000000..df0c6f6
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/in/srcTest/tests/QualifiedTests.java
@@ -0,0 +1,16 @@
+package tests;
+
+public class QualifiedTests {
+	static {
+		p.p.ATest aQualifiedTest;
+		p.p.A aQualified;
+	}
+	static {
+		p.
+		//comment
+		p/*internal*/.ATest aQualifiedTest;
+		p.
+		p //unreadable
+		/*stuff*/.A aQualified;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcPrg/q/A.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcPrg/q/A.java
new file mode 100644
index 0000000..27bbd75
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcPrg/q/A.java
@@ -0,0 +1,5 @@
+package q;
+
+public class A {
+	
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/p/p/ATest.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/p/p/ATest.java
new file mode 100644
index 0000000..07594b5
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/p/p/ATest.java
@@ -0,0 +1,12 @@
+package p.p;
+
+import q.*;
+
+public class ATest {
+	A aFromOtherPackageFragment;
+	q.A aQualifiedFromNamesake;
+	
+	public void test1() {
+		TestHelper.log("x");
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/p/p/TestHelper.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/p/p/TestHelper.java
new file mode 100644
index 0000000..e0d5861
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/p/p/TestHelper.java
@@ -0,0 +1,7 @@
+package p.p;
+import java.util.Date;
+public class TestHelper {
+	public static void log(String s) {
+		System.out.println(new Date() + ": " + s);
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/tests/AllTests.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/tests/AllTests.java
new file mode 100644
index 0000000..677fccb
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/tests/AllTests.java
@@ -0,0 +1,13 @@
+package tests;
+
+
+import p.p.ATest;
+import q.*;
+
+public class AllTests {
+	ATest aTest;
+	p.p.ATest aQualifiedTest;
+
+	A a;
+	q.A aQualified;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/tests/QualifiedTests.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/tests/QualifiedTests.java
new file mode 100644
index 0000000..75b7cf3
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots2/out/srcTest/tests/QualifiedTests.java
@@ -0,0 +1,15 @@
+package tests;
+
+public class QualifiedTests {
+	static {
+		p.p.ATest aQualifiedTest;
+		q.A aQualified;
+	}
+	static {
+		p.
+		//comment
+		p/*internal*/.ATest aQualifiedTest;
+		q //unreadable
+		/*stuff*/.A aQualified;
+	}
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots3/in/srcPrg/p/p/ToQ.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots3/in/srcPrg/p/p/ToQ.java
new file mode 100644
index 0000000..c89a2ce
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots3/in/srcPrg/p/p/ToQ.java
@@ -0,0 +1,5 @@
+package p.p;
+
+public class ToQ extends Ref {
+	Ref r;
+}
diff --git a/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots3/in/srcTest/p/p/Ref.java b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/RenamePackage/testImportFromMultiRoots3/in/srcTest/p/p/Ref.java
new file mode 100644
index 0000000..209140e
--- /dev/null
+++ b/testplugins/org.eclipse.jdt.ui.tests.refactoring/resources/Rename