1.class public Lmain; 2 3.super Ljava/lang/Object; 4 5.method public static main([Ljava/lang/String;)V 6 .registers 6 7 8 const v2, 0 9 10 11 const v3, 1 12 const v4, 0 13 new-array v1, v3, [Lsubclass1; 14 new-instance v0, Lsubclass1; 15 invoke-direct {v0}, Lsubclass1;-><init>()V 16 aput-object v0, v1, v4 17 18 goto :here2 19 20 :here 21 const v2, 1 22 23 :here2 24 25 #this is tricky, because it has to merge two array types, [Lsubclass1; and [Lsubclass2 26 #which should result in [Lsuperclass;. However, this dex file won't have a reference 27 #to [Lsuperclass; 28 aget-object v5, v1, v4 29 30 invoke-virtual {v5}, Lsupersuperclass;->somemethod()V 31 32 33 new-array v1, v3, [Lsubclass2; 34 new-instance v0, Lsubclass2; 35 invoke-direct {v0}, Lsubclass2;-><init>()V 36 aput-object v0, v1, v4 37 38 if-eqz v2, :here 39 40 return-void 41.end method