--- /dev/null
+public class Foo {
+
+ public static void main(String[] args) {
+ System.err.println(new Foo().toString());
+ }
+}
--- /dev/null
+public interface Marker {
+
+ String toString();
+}
+
--- /dev/null
+aspect MarkerAspect1 { // VerifyError
+
+ declare parents: Foo implements Marker;
+
+ public String Foo.toString() {
+ new Runnable() {
+ public void run() {
+ super.toString();
+ }
+ }.run();
+ return "oranges";
+ }
+}
--- /dev/null
+aspect MarkerAspect2 { // IncompatibleClassChangeError
+
+
+ declare parents: Foo implements Marker;
+
+ public String Marker.toString() {
+ new Runnable() {
+ public void run() {
+ Marker.super.toString();
+ }
+ }.run();
+ return "banana";//super.toString();
+ }
+}
\ No newline at end of file
--- /dev/null
+aspect MarkerAspect3 { // VerifyError
+
+ declare parents: Foo implements Marker;
+
+ public String Foo.toString() {
+ new Runnable() {
+ public void run() {
+ Foo.super.toString();
+ }
+ }.run();
+ return "oranges";
+ }
+}