Merge "Fix issue with IMT dispatch."
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 262505b..0e67f49 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -6253,15 +6253,7 @@
} // case kAbstractFound
}
if (LIKELY(fill_tables)) {
- if (current_method != nullptr) {
- // We found a default method implementation. Record it in the iftable and IMT.
- method_array->SetElementPtrSize(j, current_method, image_pointer_size_);
- SetIMTRef(unimplemented_method,
- imt_conflict_method,
- image_pointer_size_,
- current_method,
- /*out*/imt_ptr);
- } else if (!super_interface) {
+ if (current_method == nullptr && !super_interface) {
// We could not find an implementation for this method and since it is a brand new
// interface we searched the entire vtable (and all default methods) for an
// implementation but couldn't find one. We therefore need to make a miranda method.
@@ -6277,7 +6269,17 @@
new(miranda_method) ArtMethod(interface_method, image_pointer_size_);
miranda_methods.push_back(miranda_method);
}
- method_array->SetElementPtrSize(j, miranda_method, image_pointer_size_);
+ current_method = miranda_method;
+ }
+
+ if (current_method != nullptr) {
+ // We found a default method implementation. Record it in the iftable and IMT.
+ method_array->SetElementPtrSize(j, current_method, image_pointer_size_);
+ SetIMTRef(unimplemented_method,
+ imt_conflict_method,
+ image_pointer_size_,
+ current_method,
+ /*out*/imt_ptr);
}
}
} // For each method in interface end.
diff --git a/test/972-default-imt-collision/expected.txt b/test/972-default-imt-collision/expected.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/972-default-imt-collision/expected.txt
diff --git a/test/972-default-imt-collision/info.txt b/test/972-default-imt-collision/info.txt
new file mode 100644
index 0000000..adecee3
--- /dev/null
+++ b/test/972-default-imt-collision/info.txt
@@ -0,0 +1 @@
+Test for interaction of miranda and non-miranda methods on interface dispatch.
diff --git a/test/972-default-imt-collision/smali/Iface1.smali b/test/972-default-imt-collision/smali/Iface1.smali
new file mode 100644
index 0000000..088c29c
--- /dev/null
+++ b/test/972-default-imt-collision/smali/Iface1.smali
@@ -0,0 +1,32 @@
+# /*
+# * Copyright (C) 2016 The Android Open Source Project
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# */
+#
+# public interface Iface1 {
+# public default void sayHi() {
+# System.out.println("FAILED: We should never invoke this method!");
+# }
+# }
+
+.class public abstract interface LIface1;
+.super Ljava/lang/Object;
+
+.method public sayHi()V
+ .locals 2
+ sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v0, "FAILED: We should never invoke this method!"
+ invoke-virtual {v1,v0}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ return-void
+.end method
diff --git a/test/972-default-imt-collision/smali/Iface2.smali b/test/972-default-imt-collision/smali/Iface2.smali
new file mode 100644
index 0000000..4320e7e
--- /dev/null
+++ b/test/972-default-imt-collision/smali/Iface2.smali
@@ -0,0 +1,277 @@
+# /*
+# * Copyright (C) 2016 The Android Open Source Project
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# */
+#
+# public interface Iface2 {
+# public void notImplementedMethod0();
+# public void notImplementedMethod1();
+# public void notImplementedMethod2();
+# public void notImplementedMethod3();
+# public void notImplementedMethod4();
+# public void notImplementedMethod5();
+# public void notImplementedMethod6();
+# public void notImplementedMethod7();
+# public void notImplementedMethod8();
+# public void notImplementedMethod9();
+# public void notImplementedMethod10();
+# public void notImplementedMethod11();
+# public void notImplementedMethod12();
+# public void notImplementedMethod13();
+# public void notImplementedMethod14();
+# public void notImplementedMethod15();
+# public void notImplementedMethod16();
+# public void notImplementedMethod17();
+# public void notImplementedMethod18();
+# public void notImplementedMethod19();
+# public void notImplementedMethod20();
+# public void notImplementedMethod21();
+# public void notImplementedMethod22();
+# public void notImplementedMethod23();
+# public void notImplementedMethod24();
+# public void notImplementedMethod25();
+# public void notImplementedMethod26();
+# public void notImplementedMethod27();
+# public void notImplementedMethod28();
+# public void notImplementedMethod29();
+# public void notImplementedMethod30();
+# public void notImplementedMethod31();
+# public void notImplementedMethod32();
+# public void notImplementedMethod33();
+# public void notImplementedMethod34();
+# public void notImplementedMethod35();
+# public void notImplementedMethod36();
+# public void notImplementedMethod37();
+# public void notImplementedMethod38();
+# public void notImplementedMethod39();
+# public void notImplementedMethod40();
+# public void notImplementedMethod41();
+# public void notImplementedMethod42();
+# public void notImplementedMethod43();
+# public void notImplementedMethod44();
+# public void notImplementedMethod45();
+# public void notImplementedMethod46();
+# public void notImplementedMethod47();
+# public void notImplementedMethod48();
+# public void notImplementedMethod49();
+# public void notImplementedMethod50();
+# public void notImplementedMethod51();
+# public void notImplementedMethod52();
+# public void notImplementedMethod53();
+# public void notImplementedMethod54();
+# public void notImplementedMethod55();
+# public void notImplementedMethod56();
+# public void notImplementedMethod57();
+# public void notImplementedMethod58();
+# public void notImplementedMethod59();
+# public void notImplementedMethod60();
+# public void notImplementedMethod61();
+# public void notImplementedMethod62();
+# public void notImplementedMethod63();
+# }
+
+.class public abstract interface LIface2;
+.super Ljava/lang/Object;
+
+.method public abstract notImplementedMethod0()V
+.end method
+
+.method public abstract notImplementedMethod1()V
+.end method
+
+.method public abstract notImplementedMethod2()V
+.end method
+
+.method public abstract notImplementedMethod3()V
+.end method
+
+.method public abstract notImplementedMethod4()V
+.end method
+
+.method public abstract notImplementedMethod5()V
+.end method
+
+.method public abstract notImplementedMethod6()V
+.end method
+
+.method public abstract notImplementedMethod7()V
+.end method
+
+.method public abstract notImplementedMethod8()V
+.end method
+
+.method public abstract notImplementedMethod9()V
+.end method
+
+.method public abstract notImplementedMethod10()V
+.end method
+
+.method public abstract notImplementedMethod11()V
+.end method
+
+.method public abstract notImplementedMethod12()V
+.end method
+
+.method public abstract notImplementedMethod13()V
+.end method
+
+.method public abstract notImplementedMethod14()V
+.end method
+
+.method public abstract notImplementedMethod15()V
+.end method
+
+.method public abstract notImplementedMethod16()V
+.end method
+
+.method public abstract notImplementedMethod17()V
+.end method
+
+.method public abstract notImplementedMethod18()V
+.end method
+
+.method public abstract notImplementedMethod19()V
+.end method
+
+.method public abstract notImplementedMethod20()V
+.end method
+
+.method public abstract notImplementedMethod21()V
+.end method
+
+.method public abstract notImplementedMethod22()V
+.end method
+
+.method public abstract notImplementedMethod23()V
+.end method
+
+.method public abstract notImplementedMethod24()V
+.end method
+
+.method public abstract notImplementedMethod25()V
+.end method
+
+.method public abstract notImplementedMethod26()V
+.end method
+
+.method public abstract notImplementedMethod27()V
+.end method
+
+.method public abstract notImplementedMethod28()V
+.end method
+
+.method public abstract notImplementedMethod29()V
+.end method
+
+.method public abstract notImplementedMethod30()V
+.end method
+
+.method public abstract notImplementedMethod31()V
+.end method
+
+.method public abstract notImplementedMethod32()V
+.end method
+
+.method public abstract notImplementedMethod33()V
+.end method
+
+.method public abstract notImplementedMethod34()V
+.end method
+
+.method public abstract notImplementedMethod35()V
+.end method
+
+.method public abstract notImplementedMethod36()V
+.end method
+
+.method public abstract notImplementedMethod37()V
+.end method
+
+.method public abstract notImplementedMethod38()V
+.end method
+
+.method public abstract notImplementedMethod39()V
+.end method
+
+.method public abstract notImplementedMethod40()V
+.end method
+
+.method public abstract notImplementedMethod41()V
+.end method
+
+.method public abstract notImplementedMethod42()V
+.end method
+
+.method public abstract notImplementedMethod43()V
+.end method
+
+.method public abstract notImplementedMethod44()V
+.end method
+
+.method public abstract notImplementedMethod45()V
+.end method
+
+.method public abstract notImplementedMethod46()V
+.end method
+
+.method public abstract notImplementedMethod47()V
+.end method
+
+.method public abstract notImplementedMethod48()V
+.end method
+
+.method public abstract notImplementedMethod49()V
+.end method
+
+.method public abstract notImplementedMethod50()V
+.end method
+
+.method public abstract notImplementedMethod51()V
+.end method
+
+.method public abstract notImplementedMethod52()V
+.end method
+
+.method public abstract notImplementedMethod53()V
+.end method
+
+.method public abstract notImplementedMethod54()V
+.end method
+
+.method public abstract notImplementedMethod55()V
+.end method
+
+.method public abstract notImplementedMethod56()V
+.end method
+
+.method public abstract notImplementedMethod57()V
+.end method
+
+.method public abstract notImplementedMethod58()V
+.end method
+
+.method public abstract notImplementedMethod59()V
+.end method
+
+.method public abstract notImplementedMethod60()V
+.end method
+
+.method public abstract notImplementedMethod61()V
+.end method
+
+.method public abstract notImplementedMethod62()V
+.end method
+
+.method public abstract notImplementedMethod63()V
+.end method
diff --git a/test/972-default-imt-collision/smali/Klass.smali b/test/972-default-imt-collision/smali/Klass.smali
new file mode 100644
index 0000000..a98f9a7
--- /dev/null
+++ b/test/972-default-imt-collision/smali/Klass.smali
@@ -0,0 +1,993 @@
+# /*
+# * Copyright (C) 2016 The Android Open Source Project
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# */
+# public class Klass implements Iface1, Iface2 {
+# public static void testMe(Iface2 me) {
+# try {
+# me.notImplementedMethod0();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod0!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod1();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod1!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod2();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod2!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod3();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod3!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod4();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod4!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod5();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod5!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod6();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod6!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod7();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod7!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod8();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod8!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod9();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod9!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod10();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod10!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod11();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod11!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod12();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod12!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod13();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod13!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod14();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod14!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod15();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod15!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod16();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod16!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod17();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod17!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod18();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod18!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod19();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod19!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod20();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod20!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod21();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod21!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod22();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod22!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod23();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod23!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod24();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod24!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod25();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod25!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod26();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod26!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod27();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod27!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod28();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod28!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod29();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod29!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod30();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod30!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod31();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod31!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod32();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod32!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod33();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod33!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod34();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod34!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod35();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod35!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod36();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod36!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod37();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod37!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod38();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod38!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod39();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod39!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod40();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod40!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod41();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod41!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod42();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod42!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod43();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod43!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod44();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod44!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod45();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod45!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod46();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod46!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod47();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod47!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod48();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod48!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod49();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod49!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod50();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod50!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod51();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod51!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod52();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod52!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod53();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod53!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod54();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod54!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod55();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod55!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod56();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod56!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod57();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod57!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod58();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod58!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod59();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod59!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod60();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod60!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod61();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod61!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod62();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod62!");
+# } catch (AbstractMethodError e) { /* do nothing */ }
+# try {
+# me.notImplementedMethod63();
+# System.out.println("FAILED TO THROW AbstractMethodError when calling notImplementedMethod63!");
+# } catch (AbstractMethodError e) { /* do nothing */ } }
+# }
+# }
+
+.class public LKlass;
+.super Ljava/lang/Object;
+.implements LIface1;
+.implements LIface2;
+
+.method public constructor <init>()V
+ .registers 1
+ invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+ return-void
+.end method
+
+.method public static testMe(LIface2;)V
+.locals 5
+ :try_0_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod0()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod0!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_0_end
+ :try_0_end
+ .catch Ljava/lang/AbstractMethodError; {:try_0_start .. :try_0_end} :catch_0_end
+ :catch_0_end
+
+
+ :try_1_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod1()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod1!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_1_end
+ :try_1_end
+ .catch Ljava/lang/AbstractMethodError; {:try_1_start .. :try_1_end} :catch_1_end
+ :catch_1_end
+
+
+ :try_2_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod2()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod2!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_2_end
+ :try_2_end
+ .catch Ljava/lang/AbstractMethodError; {:try_2_start .. :try_2_end} :catch_2_end
+ :catch_2_end
+
+
+ :try_3_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod3()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod3!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_3_end
+ :try_3_end
+ .catch Ljava/lang/AbstractMethodError; {:try_3_start .. :try_3_end} :catch_3_end
+ :catch_3_end
+
+
+ :try_4_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod4()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod4!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_4_end
+ :try_4_end
+ .catch Ljava/lang/AbstractMethodError; {:try_4_start .. :try_4_end} :catch_4_end
+ :catch_4_end
+
+
+ :try_5_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod5()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod5!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_5_end
+ :try_5_end
+ .catch Ljava/lang/AbstractMethodError; {:try_5_start .. :try_5_end} :catch_5_end
+ :catch_5_end
+
+
+ :try_6_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod6()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod6!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_6_end
+ :try_6_end
+ .catch Ljava/lang/AbstractMethodError; {:try_6_start .. :try_6_end} :catch_6_end
+ :catch_6_end
+
+
+ :try_7_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod7()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod7!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_7_end
+ :try_7_end
+ .catch Ljava/lang/AbstractMethodError; {:try_7_start .. :try_7_end} :catch_7_end
+ :catch_7_end
+
+
+ :try_8_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod8()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod8!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_8_end
+ :try_8_end
+ .catch Ljava/lang/AbstractMethodError; {:try_8_start .. :try_8_end} :catch_8_end
+ :catch_8_end
+
+
+ :try_9_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod9()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod9!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_9_end
+ :try_9_end
+ .catch Ljava/lang/AbstractMethodError; {:try_9_start .. :try_9_end} :catch_9_end
+ :catch_9_end
+
+
+ :try_10_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod10()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod10!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_10_end
+ :try_10_end
+ .catch Ljava/lang/AbstractMethodError; {:try_10_start .. :try_10_end} :catch_10_end
+ :catch_10_end
+
+
+ :try_11_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod11()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod11!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_11_end
+ :try_11_end
+ .catch Ljava/lang/AbstractMethodError; {:try_11_start .. :try_11_end} :catch_11_end
+ :catch_11_end
+
+
+ :try_12_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod12()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod12!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_12_end
+ :try_12_end
+ .catch Ljava/lang/AbstractMethodError; {:try_12_start .. :try_12_end} :catch_12_end
+ :catch_12_end
+
+
+ :try_13_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod13()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod13!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_13_end
+ :try_13_end
+ .catch Ljava/lang/AbstractMethodError; {:try_13_start .. :try_13_end} :catch_13_end
+ :catch_13_end
+
+
+ :try_14_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod14()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod14!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_14_end
+ :try_14_end
+ .catch Ljava/lang/AbstractMethodError; {:try_14_start .. :try_14_end} :catch_14_end
+ :catch_14_end
+
+
+ :try_15_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod15()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod15!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_15_end
+ :try_15_end
+ .catch Ljava/lang/AbstractMethodError; {:try_15_start .. :try_15_end} :catch_15_end
+ :catch_15_end
+
+
+ :try_16_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod16()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod16!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_16_end
+ :try_16_end
+ .catch Ljava/lang/AbstractMethodError; {:try_16_start .. :try_16_end} :catch_16_end
+ :catch_16_end
+
+
+ :try_17_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod17()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod17!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_17_end
+ :try_17_end
+ .catch Ljava/lang/AbstractMethodError; {:try_17_start .. :try_17_end} :catch_17_end
+ :catch_17_end
+
+
+ :try_18_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod18()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod18!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_18_end
+ :try_18_end
+ .catch Ljava/lang/AbstractMethodError; {:try_18_start .. :try_18_end} :catch_18_end
+ :catch_18_end
+
+
+ :try_19_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod19()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod19!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_19_end
+ :try_19_end
+ .catch Ljava/lang/AbstractMethodError; {:try_19_start .. :try_19_end} :catch_19_end
+ :catch_19_end
+
+
+ :try_20_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod20()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod20!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_20_end
+ :try_20_end
+ .catch Ljava/lang/AbstractMethodError; {:try_20_start .. :try_20_end} :catch_20_end
+ :catch_20_end
+
+
+ :try_21_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod21()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod21!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_21_end
+ :try_21_end
+ .catch Ljava/lang/AbstractMethodError; {:try_21_start .. :try_21_end} :catch_21_end
+ :catch_21_end
+
+
+ :try_22_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod22()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod22!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_22_end
+ :try_22_end
+ .catch Ljava/lang/AbstractMethodError; {:try_22_start .. :try_22_end} :catch_22_end
+ :catch_22_end
+
+
+ :try_23_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod23()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod23!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_23_end
+ :try_23_end
+ .catch Ljava/lang/AbstractMethodError; {:try_23_start .. :try_23_end} :catch_23_end
+ :catch_23_end
+
+
+ :try_24_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod24()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod24!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_24_end
+ :try_24_end
+ .catch Ljava/lang/AbstractMethodError; {:try_24_start .. :try_24_end} :catch_24_end
+ :catch_24_end
+
+
+ :try_25_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod25()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod25!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_25_end
+ :try_25_end
+ .catch Ljava/lang/AbstractMethodError; {:try_25_start .. :try_25_end} :catch_25_end
+ :catch_25_end
+
+
+ :try_26_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod26()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod26!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_26_end
+ :try_26_end
+ .catch Ljava/lang/AbstractMethodError; {:try_26_start .. :try_26_end} :catch_26_end
+ :catch_26_end
+
+
+ :try_27_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod27()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod27!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_27_end
+ :try_27_end
+ .catch Ljava/lang/AbstractMethodError; {:try_27_start .. :try_27_end} :catch_27_end
+ :catch_27_end
+
+
+ :try_28_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod28()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod28!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_28_end
+ :try_28_end
+ .catch Ljava/lang/AbstractMethodError; {:try_28_start .. :try_28_end} :catch_28_end
+ :catch_28_end
+
+
+ :try_29_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod29()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod29!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_29_end
+ :try_29_end
+ .catch Ljava/lang/AbstractMethodError; {:try_29_start .. :try_29_end} :catch_29_end
+ :catch_29_end
+
+
+ :try_30_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod30()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod30!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_30_end
+ :try_30_end
+ .catch Ljava/lang/AbstractMethodError; {:try_30_start .. :try_30_end} :catch_30_end
+ :catch_30_end
+
+
+ :try_31_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod31()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod31!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_31_end
+ :try_31_end
+ .catch Ljava/lang/AbstractMethodError; {:try_31_start .. :try_31_end} :catch_31_end
+ :catch_31_end
+
+
+ :try_32_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod32()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod32!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_32_end
+ :try_32_end
+ .catch Ljava/lang/AbstractMethodError; {:try_32_start .. :try_32_end} :catch_32_end
+ :catch_32_end
+
+
+ :try_33_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod33()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod33!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_33_end
+ :try_33_end
+ .catch Ljava/lang/AbstractMethodError; {:try_33_start .. :try_33_end} :catch_33_end
+ :catch_33_end
+
+
+ :try_34_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod34()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod34!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_34_end
+ :try_34_end
+ .catch Ljava/lang/AbstractMethodError; {:try_34_start .. :try_34_end} :catch_34_end
+ :catch_34_end
+
+
+ :try_35_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod35()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod35!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_35_end
+ :try_35_end
+ .catch Ljava/lang/AbstractMethodError; {:try_35_start .. :try_35_end} :catch_35_end
+ :catch_35_end
+
+
+ :try_36_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod36()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod36!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_36_end
+ :try_36_end
+ .catch Ljava/lang/AbstractMethodError; {:try_36_start .. :try_36_end} :catch_36_end
+ :catch_36_end
+
+
+ :try_37_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod37()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod37!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_37_end
+ :try_37_end
+ .catch Ljava/lang/AbstractMethodError; {:try_37_start .. :try_37_end} :catch_37_end
+ :catch_37_end
+
+
+ :try_38_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod38()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod38!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_38_end
+ :try_38_end
+ .catch Ljava/lang/AbstractMethodError; {:try_38_start .. :try_38_end} :catch_38_end
+ :catch_38_end
+
+
+ :try_39_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod39()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod39!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_39_end
+ :try_39_end
+ .catch Ljava/lang/AbstractMethodError; {:try_39_start .. :try_39_end} :catch_39_end
+ :catch_39_end
+
+
+ :try_40_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod40()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod40!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_40_end
+ :try_40_end
+ .catch Ljava/lang/AbstractMethodError; {:try_40_start .. :try_40_end} :catch_40_end
+ :catch_40_end
+
+
+ :try_41_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod41()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod41!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_41_end
+ :try_41_end
+ .catch Ljava/lang/AbstractMethodError; {:try_41_start .. :try_41_end} :catch_41_end
+ :catch_41_end
+
+
+ :try_42_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod42()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod42!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_42_end
+ :try_42_end
+ .catch Ljava/lang/AbstractMethodError; {:try_42_start .. :try_42_end} :catch_42_end
+ :catch_42_end
+
+
+ :try_43_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod43()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod43!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_43_end
+ :try_43_end
+ .catch Ljava/lang/AbstractMethodError; {:try_43_start .. :try_43_end} :catch_43_end
+ :catch_43_end
+
+
+ :try_44_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod44()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod44!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_44_end
+ :try_44_end
+ .catch Ljava/lang/AbstractMethodError; {:try_44_start .. :try_44_end} :catch_44_end
+ :catch_44_end
+
+
+ :try_45_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod45()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod45!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_45_end
+ :try_45_end
+ .catch Ljava/lang/AbstractMethodError; {:try_45_start .. :try_45_end} :catch_45_end
+ :catch_45_end
+
+
+ :try_46_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod46()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod46!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_46_end
+ :try_46_end
+ .catch Ljava/lang/AbstractMethodError; {:try_46_start .. :try_46_end} :catch_46_end
+ :catch_46_end
+
+
+ :try_47_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod47()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod47!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_47_end
+ :try_47_end
+ .catch Ljava/lang/AbstractMethodError; {:try_47_start .. :try_47_end} :catch_47_end
+ :catch_47_end
+
+
+ :try_48_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod48()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod48!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_48_end
+ :try_48_end
+ .catch Ljava/lang/AbstractMethodError; {:try_48_start .. :try_48_end} :catch_48_end
+ :catch_48_end
+
+
+ :try_49_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod49()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod49!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_49_end
+ :try_49_end
+ .catch Ljava/lang/AbstractMethodError; {:try_49_start .. :try_49_end} :catch_49_end
+ :catch_49_end
+
+
+ :try_50_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod50()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod50!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_50_end
+ :try_50_end
+ .catch Ljava/lang/AbstractMethodError; {:try_50_start .. :try_50_end} :catch_50_end
+ :catch_50_end
+
+
+ :try_51_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod51()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod51!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_51_end
+ :try_51_end
+ .catch Ljava/lang/AbstractMethodError; {:try_51_start .. :try_51_end} :catch_51_end
+ :catch_51_end
+
+
+ :try_52_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod52()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod52!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_52_end
+ :try_52_end
+ .catch Ljava/lang/AbstractMethodError; {:try_52_start .. :try_52_end} :catch_52_end
+ :catch_52_end
+
+
+ :try_53_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod53()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod53!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_53_end
+ :try_53_end
+ .catch Ljava/lang/AbstractMethodError; {:try_53_start .. :try_53_end} :catch_53_end
+ :catch_53_end
+
+
+ :try_54_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod54()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod54!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_54_end
+ :try_54_end
+ .catch Ljava/lang/AbstractMethodError; {:try_54_start .. :try_54_end} :catch_54_end
+ :catch_54_end
+
+
+ :try_55_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod55()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod55!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_55_end
+ :try_55_end
+ .catch Ljava/lang/AbstractMethodError; {:try_55_start .. :try_55_end} :catch_55_end
+ :catch_55_end
+
+
+ :try_56_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod56()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod56!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_56_end
+ :try_56_end
+ .catch Ljava/lang/AbstractMethodError; {:try_56_start .. :try_56_end} :catch_56_end
+ :catch_56_end
+
+
+ :try_57_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod57()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod57!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_57_end
+ :try_57_end
+ .catch Ljava/lang/AbstractMethodError; {:try_57_start .. :try_57_end} :catch_57_end
+ :catch_57_end
+
+
+ :try_58_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod58()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod58!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_58_end
+ :try_58_end
+ .catch Ljava/lang/AbstractMethodError; {:try_58_start .. :try_58_end} :catch_58_end
+ :catch_58_end
+
+
+ :try_59_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod59()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod59!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_59_end
+ :try_59_end
+ .catch Ljava/lang/AbstractMethodError; {:try_59_start .. :try_59_end} :catch_59_end
+ :catch_59_end
+
+
+ :try_60_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod60()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod60!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_60_end
+ :try_60_end
+ .catch Ljava/lang/AbstractMethodError; {:try_60_start .. :try_60_end} :catch_60_end
+ :catch_60_end
+
+
+ :try_61_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod61()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod61!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_61_end
+ :try_61_end
+ .catch Ljava/lang/AbstractMethodError; {:try_61_start .. :try_61_end} :catch_61_end
+ :catch_61_end
+
+
+ :try_62_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod62()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod62!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_62_end
+ :try_62_end
+ .catch Ljava/lang/AbstractMethodError; {:try_62_start .. :try_62_end} :catch_62_end
+ :catch_62_end
+
+
+ :try_63_start
+ invoke-interface {p0}, LIface2;->notImplementedMethod63()V
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "FAILED TO THROW AbstractMethodError when calling notImplementedMethod63!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ goto :catch_63_end
+ :try_63_end
+ .catch Ljava/lang/AbstractMethodError; {:try_63_start .. :try_63_end} :catch_63_end
+ :catch_63_end
+ return-void
+.end method
diff --git a/test/972-default-imt-collision/src/Main.java b/test/972-default-imt-collision/src/Main.java
new file mode 100644
index 0000000..6819e43
--- /dev/null
+++ b/test/972-default-imt-collision/src/Main.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import java.lang.reflect.*;
+
+public class Main {
+ public static void main(String[] args) {
+ try {
+ Class<?> c = Class.forName("Klass");
+ Object o = c.newInstance();
+ Class<?> iface = Class.forName("Iface2");
+ Method test = c.getMethod("testMe", iface);
+ test.invoke(null, o);
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.out.println("FAILED: could not run testMe!");
+ }
+ }
+}