2019-07-24 11:27:29 +00:00
.class public abstract L com/esotericsoftware/b/b ;
.super L java/lang/Object ;
.source "ConstructorAccess.java"
# annotations
.annotation system L dalvik/annotation/Signature ;
value = {
"<T:" ,
"Ljava/lang/Object;" ,
">" ,
"Ljava/lang/Object;"
}
.end annotation
# instance fields
2019-11-15 02:21:15 +00:00
.field Ge : Z
2019-07-24 11:27:29 +00:00
# direct methods
.method public constructor <init> ( ) V
.locals 0
invoke-direct { p0 } , L java/lang/Object ;-> <init> ( ) V
return-void
.end method
.method public static i ( L java/lang/Class ;) L com/esotericsoftware/b/b ;
.locals 20
.annotation system L dalvik/annotation/Signature ;
value = {
"<T:" ,
"Ljava/lang/Object;" ,
">(" ,
"Ljava/lang/Class<" ,
"TT;>;)" ,
"Lcom/esotericsoftware/b/b<" ,
"TT;>;"
}
.end annotation
move-object/from16 v1 , p0
invoke-virtual/range { p0 . . p0 } , L java/lang/Class ;-> getEnclosingClass ( ) L java/lang/Class ;
move-result-object v0
const/4 v2 , 0x0
const/4 v3 , 0x1
if-eqz v0 , :cond_0
invoke-virtual/range { p0 . . p0 } , L java/lang/Class ;-> isMemberClass ( ) Z
move-result v4
if-eqz v4 , :cond_0
invoke-virtual/range { p0 . . p0 } , L java/lang/Class ;-> getModifiers ( ) I
move-result v4
invoke-static { v4 } , L java/lang/reflect/Modifier ;-> isStatic ( I ) Z
move-result v4
if-nez v4 , :cond_0
const/4 v4 , 0x1
goto :goto_0
:cond_0
const/4 v4 , 0x0
:goto_0
invoke-virtual/range { p0 . . p0 } , L java/lang/Class ;-> getName ( ) L java/lang/String ;
move-result-object v5
new-instance v6 , L java/lang/StringBuilder ;
invoke-direct { v6 } , L java/lang/StringBuilder ;-> <init> ( ) V
invoke-virtual { v6 , v5 } , L java/lang/StringBuilder ;-> append ( L java/lang/String ;) L java/lang/StringBuilder ;
const-string v7 , "ConstructorAccess"
invoke-virtual { v6 , v7 } , L java/lang/StringBuilder ;-> append ( L java/lang/String ;) L java/lang/StringBuilder ;
invoke-virtual { v6 } , L java/lang/StringBuilder ;-> toString ( ) L java/lang/String ;
move-result-object v6
const-string v7 , "java."
invoke-virtual { v6 , v7 } , L java/lang/String ;-> startsWith ( L java/lang/String ;) Z
move-result v7
if-eqz v7 , :cond_1
invoke-static { v6 } , L java/lang/String ;-> valueOf ( L java/lang/Object ;) L java/lang/String ;
move-result-object v6
const-string v7 , "reflectasm."
invoke-virtual { v7 , v6 } , L java/lang/String ;-> concat ( L java/lang/String ;) L java/lang/String ;
move-result-object v6
:cond_1
invoke-static/range { p0 . . p0 } , L com/esotericsoftware/b/a ;-> g ( L java/lang/Class ;) L com/esotericsoftware/b/a ;
move-result-object v7
:try_start_0
invoke-virtual { v7 , v6 } , L com/esotericsoftware/b/a ;-> loadClass ( L java/lang/String ;) L java/lang/Class ;
move-result-object v0
:try_end_0
.catch L java/lang/ClassNotFoundException ; { :try_start_0 . . :try_end_0 } :catch_0
goto/16 :goto_6
:catch_0
monitor-enter v7
:try_start_1
invoke-virtual { v7 , v6 } , L com/esotericsoftware/b/a ;-> loadClass ( L java/lang/String ;) L java/lang/Class ;
move-result-object v0
:try_end_1
.catch L java/lang/ClassNotFoundException ; { :try_start_1 . . :try_end_1 } :catch_1
.catchall { :try_start_1 . . :try_end_1 } :catchall_0
goto/16 :goto_5
:catchall_0
move-exception v0
goto/16 :goto_8
:catch_1
const/16 v8 , 0x2f
const/16 v9 , 0x2e
:try_start_2
invoke-virtual { v6 , v9 , v8 } , L java/lang/String ;-> replace ( CC ) L java/lang/String ;
move-result-object v13
invoke-virtual { v5 , v9 , v8 } , L java/lang/String ;-> replace ( CC ) L java/lang/String ;
move-result-object v5
:try_end_2
.catchall { :try_start_2 . . :try_end_2 } :catchall_0
const/4 v10 , 0x0
if-nez v4 , :cond_3
:try_start_3
invoke-virtual { v1 , v10 } , L java/lang/Class ;-> getDeclaredConstructor ( [ L java/lang/Class ;) L java/lang/reflect/Constructor ;
move-result-object v0
invoke-virtual { v0 } , L java/lang/reflect/Constructor ;-> getModifiers ( ) I
move-result v0
:try_end_3
.catch L java/lang/Exception ; { :try_start_3 . . :try_end_3 } :catch_2
.catchall { :try_start_3 . . :try_end_3 } :catchall_0
:try_start_4
invoke-static { v0 } , L java/lang/reflect/Modifier ;-> isPrivate ( I ) Z
move-result v8
if-nez v8 , :cond_2
:goto_1
move-object v8 , v10
goto :goto_2
:cond_2
new-instance v0 , L java/lang/RuntimeException ;
new-instance v2 , L java/lang/StringBuilder ;
const-string v3 , "Class cannot be created (the no-arg constructor is private): "
invoke-direct { v2 , v3 } , L java/lang/StringBuilder ;-> <init> ( L java/lang/String ;) V
invoke-virtual/range { p0 . . p0 } , L java/lang/Class ;-> getName ( ) L java/lang/String ;
move-result-object v1
invoke-virtual { v2 , v1 } , L java/lang/StringBuilder ;-> append ( L java/lang/String ;) L java/lang/StringBuilder ;
invoke-virtual { v2 } , L java/lang/StringBuilder ;-> toString ( ) L java/lang/String ;
move-result-object v1
invoke-direct { v0 , v1 } , L java/lang/RuntimeException ;-> <init> ( L java/lang/String ;) V
throw v0
:catch_2
move-exception v0
new-instance v2 , L java/lang/RuntimeException ;
new-instance v3 , L java/lang/StringBuilder ;
const-string v4 , "Class cannot be created (missing no-arg constructor): "
invoke-direct { v3 , v4 } , L java/lang/StringBuilder ;-> <init> ( L java/lang/String ;) V
invoke-virtual/range { p0 . . p0 } , L java/lang/Class ;-> getName ( ) L java/lang/String ;
move-result-object v1
invoke-virtual { v3 , v1 } , L java/lang/StringBuilder ;-> append ( L java/lang/String ;) L java/lang/StringBuilder ;
invoke-virtual { v3 } , L java/lang/StringBuilder ;-> toString ( ) L java/lang/String ;
move-result-object v1
invoke-direct { v2 , v1 , v0 } , L java/lang/RuntimeException ;-> <init> ( L java/lang/String ;L java/lang/Throwable ;) V
throw v2
:cond_3
invoke-virtual { v0 } , L java/lang/Class ;-> getName ( ) L java/lang/String ;
move-result-object v10
invoke-virtual { v10 , v9 , v8 } , L java/lang/String ;-> replace ( CC ) L java/lang/String ;
move-result-object v10
:try_end_4
.catchall { :try_start_4 . . :try_end_4 } :catchall_0
:try_start_5
new-array v8 , v3 , [ L java/lang/Class ;
aput-object v0 , v8 , v2
invoke-virtual { v1 , v8 } , L java/lang/Class ;-> getDeclaredConstructor ( [ L java/lang/Class ;) L java/lang/reflect/Constructor ;
move-result-object v0
invoke-virtual { v0 } , L java/lang/reflect/Constructor ;-> getModifiers ( ) I
move-result v0
:try_end_5
2019-08-30 20:04:20 +00:00
.catch L java/lang/Exception ; { :try_start_5 . . :try_end_5 } :catch_3
2019-07-24 11:27:29 +00:00
.catchall { :try_start_5 . . :try_end_5 } :catchall_0
:try_start_6
invoke-static { v0 } , L java/lang/reflect/Modifier ;-> isPrivate ( I ) Z
move-result v8
if-nez v8 , :cond_8
goto :goto_1
:goto_2
invoke-static { v0 } , L java/lang/reflect/Modifier ;-> isPublic ( I ) Z
move-result v0
if-eqz v0 , :cond_4
const-string v0 , "com/esotericsoftware/reflectasm/PublicConstructorAccess"
goto :goto_3
:cond_4
const-string v0 , "com/esotericsoftware/reflectasm/ConstructorAccess"
:goto_3
new-instance v9 , L org/a/a/h ;
invoke-direct { v9 , v2 } , L org/a/a/h ;-> <init> ( I ) V
const v11 , 0x3002d
const/16 v12 , 0x21
const/4 v14 , 0x0
const/16 v16 , 0x0
move-object v10 , v9
move-object v15 , v0
invoke-virtual/range { v10 . . v16 } , L org/a/a/h ;-> a ( II L java/lang/String ;L java/lang/String ;L java/lang/String ;[ L java/lang/String ;) V
const/4 v15 , 0x1
const-string v16 , "<init>"
const-string v17 , "()V"
const/16 v18 , 0x0
const/16 v19 , 0x0
move-object v14 , v9
invoke-virtual/range { v14 . . v19 } , L org/a/a/h ;-> a ( I L java/lang/String ;L java/lang/String ;L java/lang/String ;[ L java/lang/String ;) L org/a/a/t ;
move-result-object v10
const/16 v11 , 0x19
2019-10-09 23:16:36 +00:00
invoke-virtual { v10 , v11 , v2 } , L org/a/a/t ;-> Z ( II ) V
2019-07-24 11:27:29 +00:00
const-string v2 , "<init>"
const-string v12 , "()V"
const/16 v13 , 0xb7
invoke-virtual { v10 , v13 , v0 , v2 , v12 } , L org/a/a/t ;-> b ( I L java/lang/String ;L java/lang/String ;L java/lang/String ;) V
const/16 v0 , 0xb1
2019-10-09 23:16:36 +00:00
invoke-virtual { v10 , v0 } , L org/a/a/t ;-> dR ( I ) V
2019-07-24 11:27:29 +00:00
2019-10-09 23:16:36 +00:00
invoke-virtual { v10 , v3 , v3 } , L org/a/a/t ;-> ab ( II ) V
2019-07-24 11:27:29 +00:00
const/4 v15 , 0x1
const-string v16 , "newInstance"
const-string v17 , "()Ljava/lang/Object;"
const/16 v18 , 0x0
const/16 v19 , 0x0
move-object v14 , v9
invoke-virtual/range { v14 . . v19 } , L org/a/a/h ;-> a ( I L java/lang/String ;L java/lang/String ;L java/lang/String ;[ L java/lang/String ;) L org/a/a/t ;
move-result-object v0
const/16 v2 , 0xbb
2019-10-07 23:23:22 +00:00
invoke-virtual { v0 , v2 , v5 } , L org/a/a/t ;-> h ( I L java/lang/String ;) V
2019-07-24 11:27:29 +00:00
const/16 v10 , 0x59
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v10 } , L org/a/a/t ;-> dR ( I ) V
2019-07-24 11:27:29 +00:00
const-string v12 , "<init>"
const-string v14 , "()V"
invoke-virtual { v0 , v13 , v5 , v12 , v14 } , L org/a/a/t ;-> b ( I L java/lang/String ;L java/lang/String ;L java/lang/String ;) V
const/16 v12 , 0xb0
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v12 } , L org/a/a/t ;-> dR ( I ) V
2019-07-24 11:27:29 +00:00
const/4 v15 , 0x2
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v15 , v3 } , L org/a/a/t ;-> ab ( II ) V
2019-07-24 11:27:29 +00:00
const/4 v0 , 0x1
const-string v16 , "newInstance"
const-string v17 , "(Ljava/lang/Object;)Ljava/lang/Object;"
const/16 v18 , 0x0
const/16 v19 , 0x0
move-object v14 , v9
move v15 , v0
invoke-virtual/range { v14 . . v19 } , L org/a/a/h ;-> a ( I L java/lang/String ;L java/lang/String ;L java/lang/String ;[ L java/lang/String ;) L org/a/a/t ;
move-result-object v0
if-eqz v8 , :cond_5
2019-10-07 23:23:22 +00:00
invoke-virtual { v0 , v2 , v5 } , L org/a/a/t ;-> h ( I L java/lang/String ;) V
2019-07-24 11:27:29 +00:00
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v10 } , L org/a/a/t ;-> dR ( I ) V
2019-07-24 11:27:29 +00:00
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v11 , v3 } , L org/a/a/t ;-> Z ( II ) V
2019-07-24 11:27:29 +00:00
const/16 v2 , 0xc0
2019-10-07 23:23:22 +00:00
invoke-virtual { v0 , v2 , v8 } , L org/a/a/t ;-> h ( I L java/lang/String ;) V
2019-07-24 11:27:29 +00:00
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v10 } , L org/a/a/t ;-> dR ( I ) V
2019-07-24 11:27:29 +00:00
const/16 v2 , 0xb6
const-string v3 , "java/lang/Object"
const-string v10 , "getClass"
const-string v11 , "()Ljava/lang/Class;"
invoke-virtual { v0 , v2 , v3 , v10 , v11 } , L org/a/a/t ;-> b ( I L java/lang/String ;L java/lang/String ;L java/lang/String ;) V
const/16 v2 , 0x57
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v2 } , L org/a/a/t ;-> dR ( I ) V
2019-07-24 11:27:29 +00:00
const-string v2 , "<init>"
new-instance v3 , L java/lang/StringBuilder ;
const-string v10 , "(L"
invoke-direct { v3 , v10 } , L java/lang/StringBuilder ;-> <init> ( L java/lang/String ;) V
invoke-virtual { v3 , v8 } , L java/lang/StringBuilder ;-> append ( L java/lang/String ;) L java/lang/StringBuilder ;
const-string v8 , ";)V"
invoke-virtual { v3 , v8 } , L java/lang/StringBuilder ;-> append ( L java/lang/String ;) L java/lang/StringBuilder ;
invoke-virtual { v3 } , L java/lang/StringBuilder ;-> toString ( ) L java/lang/String ;
move-result-object v3
invoke-virtual { v0 , v13 , v5 , v2 , v3 } , L org/a/a/t ;-> b ( I L java/lang/String ;L java/lang/String ;L java/lang/String ;) V
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v12 } , L org/a/a/t ;-> dR ( I ) V
2019-07-24 11:27:29 +00:00
const/4 v2 , 0x4
const/4 v3 , 0x2
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v2 , v3 } , L org/a/a/t ;-> ab ( II ) V
2019-07-24 11:27:29 +00:00
goto :goto_4
:cond_5
const/4 v3 , 0x2
const-string v5 , "java/lang/UnsupportedOperationException"
2019-10-07 23:23:22 +00:00
invoke-virtual { v0 , v2 , v5 } , L org/a/a/t ;-> h ( I L java/lang/String ;) V
2019-07-24 11:27:29 +00:00
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v10 } , L org/a/a/t ;-> dR ( I ) V
2019-07-24 11:27:29 +00:00
const-string v2 , "Not an inner class."
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v2 } , L org/a/a/t ;-> bl ( L java/lang/Object ;) V
2019-07-24 11:27:29 +00:00
const-string v2 , "java/lang/UnsupportedOperationException"
const-string v5 , "<init>"
const-string v8 , "(Ljava/lang/String;)V"
invoke-virtual { v0 , v13 , v2 , v5 , v8 } , L org/a/a/t ;-> b ( I L java/lang/String ;L java/lang/String ;L java/lang/String ;) V
const/16 v2 , 0xbf
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v2 } , L org/a/a/t ;-> dR ( I ) V
2019-07-24 11:27:29 +00:00
const/4 v2 , 0x3
2019-10-09 23:16:36 +00:00
invoke-virtual { v0 , v2 , v3 } , L org/a/a/t ;-> ab ( II ) V
2019-07-24 11:27:29 +00:00
:goto_4
2019-11-15 02:21:15 +00:00
invoke-virtual { v9 } , L org/a/a/h ;-> HC ( ) [B
2019-07-24 11:27:29 +00:00
move-result-object v0
invoke-virtual { v7 , v6 , v0 } , L com/esotericsoftware/b/a ;-> a ( L java/lang/String ;[B ) L java/lang/Class ;
move-result-object v0
:goto_5
monitor-exit v7
:try_end_6
.catchall { :try_start_6 . . :try_end_6 } :catchall_0
:goto_6
:try_start_7
invoke-virtual { v0 } , L java/lang/Class ;-> newInstance ( ) L java/lang/Object ;
move-result-object v2
check-cast v2 , L com/esotericsoftware/b/b ;
:try_end_7
2019-08-30 20:04:20 +00:00
.catchall { :try_start_7 . . :try_end_7 } :catchall_1
2019-07-24 11:27:29 +00:00
instance-of v3 , v2 , L com/esotericsoftware/b/e ;
if-nez v3 , :cond_7
invoke-static { v1 , v0 } , L com/esotericsoftware/b/a ;-> a ( L java/lang/Class ;L java/lang/Class ;) Z
move-result v0
if-nez v0 , :cond_7
new-instance v0 , L java/lang/RuntimeException ;
new-instance v2 , L java/lang/StringBuilder ;
invoke-direct { v2 } , L java/lang/StringBuilder ;-> <init> ( ) V
if-nez v4 , :cond_6
const-string v3 , "Class cannot be created (the no-arg constructor is protected or package-protected, and its ConstructorAccess could not be defined in the same class loader): "
goto :goto_7
:cond_6
const-string v3 , "Non-static member class cannot be created (the enclosing class constructor is protected or package-protected, and its ConstructorAccess could not be defined in the same class loader): "
:goto_7
invoke-virtual { v2 , v3 } , L java/lang/StringBuilder ;-> append ( L java/lang/String ;) L java/lang/StringBuilder ;
invoke-virtual/range { p0 . . p0 } , L java/lang/Class ;-> getName ( ) L java/lang/String ;
move-result-object v1
invoke-virtual { v2 , v1 } , L java/lang/StringBuilder ;-> append ( L java/lang/String ;) L java/lang/StringBuilder ;
invoke-virtual { v2 } , L java/lang/StringBuilder ;-> toString ( ) L java/lang/String ;
move-result-object v1
invoke-direct { v0 , v1 } , L java/lang/RuntimeException ;-> <init> ( L java/lang/String ;) V
throw v0
:cond_7
2019-11-15 02:21:15 +00:00
iput-boolean v4 , v2 , L com/esotericsoftware/b/b ;-> Ge : Z
2019-07-24 11:27:29 +00:00
return-object v2
2019-08-30 20:04:20 +00:00
:catchall_1
2019-07-24 11:27:29 +00:00
move-exception v0
new-instance v1 , L java/lang/RuntimeException ;
invoke-static { v6 } , L java/lang/String ;-> valueOf ( L java/lang/Object ;) L java/lang/String ;
move-result-object v2
const-string v3 , "Exception constructing constructor access class: "
invoke-virtual { v3 , v2 } , L java/lang/String ;-> concat ( L java/lang/String ;) L java/lang/String ;
move-result-object v2
invoke-direct { v1 , v2 , v0 } , L java/lang/RuntimeException ;-> <init> ( L java/lang/String ;L java/lang/Throwable ;) V
throw v1
:cond_8
:try_start_8
new-instance v0 , L java/lang/RuntimeException ;
new-instance v2 , L java/lang/StringBuilder ;
const-string v3 , "Non-static member class cannot be created (the enclosing class constructor is private): "
invoke-direct { v2 , v3 } , L java/lang/StringBuilder ;-> <init> ( L java/lang/String ;) V
invoke-virtual/range { p0 . . p0 } , L java/lang/Class ;-> getName ( ) L java/lang/String ;
move-result-object v1
invoke-virtual { v2 , v1 } , L java/lang/StringBuilder ;-> append ( L java/lang/String ;) L java/lang/StringBuilder ;
invoke-virtual { v2 } , L java/lang/StringBuilder ;-> toString ( ) L java/lang/String ;
move-result-object v1
invoke-direct { v0 , v1 } , L java/lang/RuntimeException ;-> <init> ( L java/lang/String ;) V
throw v0
2019-08-30 20:04:20 +00:00
:catch_3
2019-07-24 11:27:29 +00:00
move-exception v0
new-instance v2 , L java/lang/RuntimeException ;
new-instance v3 , L java/lang/StringBuilder ;
const-string v4 , "Non-static member class cannot be created (missing enclosing class constructor): "
invoke-direct { v3 , v4 } , L java/lang/StringBuilder ;-> <init> ( L java/lang/String ;) V
invoke-virtual/range { p0 . . p0 } , L java/lang/Class ;-> getName ( ) L java/lang/String ;
move-result-object v1
invoke-virtual { v3 , v1 } , L java/lang/StringBuilder ;-> append ( L java/lang/String ;) L java/lang/StringBuilder ;
invoke-virtual { v3 } , L java/lang/StringBuilder ;-> toString ( ) L java/lang/String ;
move-result-object v1
invoke-direct { v2 , v1 , v0 } , L java/lang/RuntimeException ;-> <init> ( L java/lang/String ;L java/lang/Throwable ;) V
throw v2
:goto_8
monitor-exit v7
:try_end_8
.catchall { :try_start_8 . . :try_end_8 } :catchall_0
throw v0
.end method
# virtual methods
.method public abstract newInstance ( ) L java/lang/Object ;
.annotation system L dalvik/annotation/Signature ;
value = {
"()TT;"
}
.end annotation
.end method