public final class com.google.gson.internal.bind.TreeTypeAdapter<T> extends com.google.gson.TypeAdapter<T>
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.google.gson.internal.bind.TreeTypeAdapter
super_class: com.google.gson.TypeAdapter
{
private final com.google.gson.JsonSerializer<T> serializer;
descriptor: Lcom/google/gson/JsonSerializer;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lcom/google/gson/JsonSerializer<TT;>;
private final com.google.gson.JsonDeserializer<T> deserializer;
descriptor: Lcom/google/gson/JsonDeserializer;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lcom/google/gson/JsonDeserializer<TT;>;
final com.google.gson.Gson gson;
descriptor: Lcom/google/gson/Gson;
flags: (0x0010) ACC_FINAL
private final com.google.gson.reflect.TypeToken<T> typeToken;
descriptor: Lcom/google/gson/reflect/TypeToken;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lcom/google/gson/reflect/TypeToken<TT;>;
private final com.google.gson.TypeAdapterFactory skipPast;
descriptor: Lcom/google/gson/TypeAdapterFactory;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.google.gson.internal.bind.TreeTypeAdapter<T>.GsonContextImpl context;
descriptor: Lcom/google/gson/internal/bind/TreeTypeAdapter$GsonContextImpl;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lcom/google/gson/internal/bind/TreeTypeAdapter<TT;>.GsonContextImpl;
private com.google.gson.TypeAdapter<T> delegate;
descriptor: Lcom/google/gson/TypeAdapter;
flags: (0x0002) ACC_PRIVATE
Signature: Lcom/google/gson/TypeAdapter<TT;>;
public void <init>(com.google.gson.JsonSerializer<T>, com.google.gson.JsonDeserializer<T>, com.google.gson.Gson, com.google.gson.reflect.TypeToken<T>, com.google.gson.TypeAdapterFactory);
descriptor: (Lcom/google/gson/JsonSerializer;Lcom/google/gson/JsonDeserializer;Lcom/google/gson/Gson;Lcom/google/gson/reflect/TypeToken;Lcom/google/gson/TypeAdapterFactory;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
invokespecial com.google.gson.TypeAdapter.<init>:()V
1: aload 0
new com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl
dup
aload 0
invokespecial com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.<init>:(Lcom/google/gson/internal/bind/TreeTypeAdapter;)V
putfield com.google.gson.internal.bind.TreeTypeAdapter.context:Lcom/google/gson/internal/bind/TreeTypeAdapter$GsonContextImpl;
2: aload 0
aload 1
putfield com.google.gson.internal.bind.TreeTypeAdapter.serializer:Lcom/google/gson/JsonSerializer;
3: aload 0
aload 2
putfield com.google.gson.internal.bind.TreeTypeAdapter.deserializer:Lcom/google/gson/JsonDeserializer;
4: aload 0
aload 3
putfield com.google.gson.internal.bind.TreeTypeAdapter.gson:Lcom/google/gson/Gson;
5: aload 0
aload 4
putfield com.google.gson.internal.bind.TreeTypeAdapter.typeToken:Lcom/google/gson/reflect/TypeToken;
6: aload 0
aload 5
putfield com.google.gson.internal.bind.TreeTypeAdapter.skipPast:Lcom/google/gson/TypeAdapterFactory;
7: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/google/gson/internal/bind/TreeTypeAdapter<TT;>;
0 8 1 serializer Lcom/google/gson/JsonSerializer<TT;>;
0 8 2 deserializer Lcom/google/gson/JsonDeserializer<TT;>;
0 8 3 gson Lcom/google/gson/Gson;
0 8 4 typeToken Lcom/google/gson/reflect/TypeToken<TT;>;
0 8 5 skipPast Lcom/google/gson/TypeAdapterFactory;
Signature: (Lcom/google/gson/JsonSerializer<TT;>;Lcom/google/gson/JsonDeserializer<TT;>;Lcom/google/gson/Gson;Lcom/google/gson/reflect/TypeToken<TT;>;Lcom/google/gson/TypeAdapterFactory;)V
MethodParameters:
Name Flags
serializer
deserializer
gson
typeToken
skipPast
public T read(com.google.gson.stream.JsonReader);
descriptor: (Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.deserializer:Lcom/google/gson/JsonDeserializer;
ifnonnull 2
1: aload 0
invokevirtual com.google.gson.internal.bind.TreeTypeAdapter.delegate:()Lcom/google/gson/TypeAdapter;
aload 1
invokevirtual com.google.gson.TypeAdapter.read:(Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;
areturn
2: StackMap locals:
StackMap stack:
aload 1
invokestatic com.google.gson.internal.Streams.parse:(Lcom/google/gson/stream/JsonReader;)Lcom/google/gson/JsonElement;
astore 2
start local 2 3: aload 2
invokevirtual com.google.gson.JsonElement.isJsonNull:()Z
ifeq 5
4: aconst_null
areturn
5: StackMap locals: com.google.gson.JsonElement
StackMap stack:
aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.deserializer:Lcom/google/gson/JsonDeserializer;
aload 2
aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.typeToken:Lcom/google/gson/reflect/TypeToken;
invokevirtual com.google.gson.reflect.TypeToken.getType:()Ljava/lang/reflect/Type;
aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.context:Lcom/google/gson/internal/bind/TreeTypeAdapter$GsonContextImpl;
invokeinterface com.google.gson.JsonDeserializer.deserialize:(Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/google/gson/internal/bind/TreeTypeAdapter<TT;>;
0 6 1 in Lcom/google/gson/stream/JsonReader;
3 6 2 value Lcom/google/gson/JsonElement;
Exceptions:
throws java.io.IOException
Signature: (Lcom/google/gson/stream/JsonReader;)TT;
MethodParameters:
Name Flags
in
public void write(com.google.gson.stream.JsonWriter, );
descriptor: (Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.serializer:Lcom/google/gson/JsonSerializer;
ifnonnull 3
1: aload 0
invokevirtual com.google.gson.internal.bind.TreeTypeAdapter.delegate:()Lcom/google/gson/TypeAdapter;
aload 1
aload 2
invokevirtual com.google.gson.TypeAdapter.write:(Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V
2: return
3: StackMap locals:
StackMap stack:
aload 2
ifnonnull 6
4: aload 1
invokevirtual com.google.gson.stream.JsonWriter.nullValue:()Lcom/google/gson/stream/JsonWriter;
pop
5: return
6: StackMap locals:
StackMap stack:
aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.serializer:Lcom/google/gson/JsonSerializer;
aload 2
aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.typeToken:Lcom/google/gson/reflect/TypeToken;
invokevirtual com.google.gson.reflect.TypeToken.getType:()Ljava/lang/reflect/Type;
aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.context:Lcom/google/gson/internal/bind/TreeTypeAdapter$GsonContextImpl;
invokeinterface com.google.gson.JsonSerializer.serialize:(Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement;
astore 3
start local 3 7: aload 3
aload 1
invokestatic com.google.gson.internal.Streams.write:(Lcom/google/gson/JsonElement;Lcom/google/gson/stream/JsonWriter;)V
8: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/google/gson/internal/bind/TreeTypeAdapter<TT;>;
0 9 1 out Lcom/google/gson/stream/JsonWriter;
0 9 2 value TT;
7 9 3 tree Lcom/google/gson/JsonElement;
Exceptions:
throws java.io.IOException
Signature: (Lcom/google/gson/stream/JsonWriter;TT;)V
MethodParameters:
Name Flags
out
value
private com.google.gson.TypeAdapter<T> delegate();
descriptor: ()Lcom/google/gson/TypeAdapter;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.delegate:Lcom/google/gson/TypeAdapter;
astore 1
start local 1 1: aload 1
ifnull 3
2: aload 1
goto 4
3: StackMap locals: com.google.gson.TypeAdapter
StackMap stack:
aload 0
aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.gson:Lcom/google/gson/Gson;
aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.skipPast:Lcom/google/gson/TypeAdapterFactory;
aload 0
getfield com.google.gson.internal.bind.TreeTypeAdapter.typeToken:Lcom/google/gson/reflect/TypeToken;
invokevirtual com.google.gson.Gson.getDelegateAdapter:(Lcom/google/gson/TypeAdapterFactory;Lcom/google/gson/reflect/TypeToken;)Lcom/google/gson/TypeAdapter;
dup_x1
putfield com.google.gson.internal.bind.TreeTypeAdapter.delegate:Lcom/google/gson/TypeAdapter;
4: StackMap locals:
StackMap stack: com.google.gson.TypeAdapter
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/google/gson/internal/bind/TreeTypeAdapter<TT;>;
1 5 1 d Lcom/google/gson/TypeAdapter<TT;>;
Signature: ()Lcom/google/gson/TypeAdapter<TT;>;
public static com.google.gson.TypeAdapterFactory newFactory(com.google.gson.reflect.TypeToken<?>, );
descriptor: (Lcom/google/gson/reflect/TypeToken;Ljava/lang/Object;)Lcom/google/gson/TypeAdapterFactory;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: new com.google.gson.internal.bind.TreeTypeAdapter$SingleTypeFactory
dup
aload 1
aload 0
iconst_0
aconst_null
invokespecial com.google.gson.internal.bind.TreeTypeAdapter$SingleTypeFactory.<init>:(Ljava/lang/Object;Lcom/google/gson/reflect/TypeToken;ZLjava/lang/Class;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 exactType Lcom/google/gson/reflect/TypeToken<*>;
0 1 1 typeAdapter Ljava/lang/Object;
Signature: (Lcom/google/gson/reflect/TypeToken<*>;Ljava/lang/Object;)Lcom/google/gson/TypeAdapterFactory;
MethodParameters:
Name Flags
exactType
typeAdapter
public static com.google.gson.TypeAdapterFactory newFactoryWithMatchRawType(com.google.gson.reflect.TypeToken<?>, );
descriptor: (Lcom/google/gson/reflect/TypeToken;Ljava/lang/Object;)Lcom/google/gson/TypeAdapterFactory;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.google.gson.reflect.TypeToken.getType:()Ljava/lang/reflect/Type;
aload 0
invokevirtual com.google.gson.reflect.TypeToken.getRawType:()Ljava/lang/Class;
if_acmpne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: istore 2
start local 2 3: new com.google.gson.internal.bind.TreeTypeAdapter$SingleTypeFactory
dup
aload 1
aload 0
iload 2
aconst_null
invokespecial com.google.gson.internal.bind.TreeTypeAdapter$SingleTypeFactory.<init>:(Ljava/lang/Object;Lcom/google/gson/reflect/TypeToken;ZLjava/lang/Class;)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 exactType Lcom/google/gson/reflect/TypeToken<*>;
0 4 1 typeAdapter Ljava/lang/Object;
3 4 2 matchRawType Z
Signature: (Lcom/google/gson/reflect/TypeToken<*>;Ljava/lang/Object;)Lcom/google/gson/TypeAdapterFactory;
MethodParameters:
Name Flags
exactType
typeAdapter
public static com.google.gson.TypeAdapterFactory newTypeHierarchyFactory(java.lang.Class<?>, );
descriptor: (Ljava/lang/Class;Ljava/lang/Object;)Lcom/google/gson/TypeAdapterFactory;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: new com.google.gson.internal.bind.TreeTypeAdapter$SingleTypeFactory
dup
aload 1
aconst_null
iconst_0
aload 0
invokespecial com.google.gson.internal.bind.TreeTypeAdapter$SingleTypeFactory.<init>:(Ljava/lang/Object;Lcom/google/gson/reflect/TypeToken;ZLjava/lang/Class;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 hierarchyType Ljava/lang/Class<*>;
0 1 1 typeAdapter Ljava/lang/Object;
Signature: (Ljava/lang/Class<*>;Ljava/lang/Object;)Lcom/google/gson/TypeAdapterFactory;
MethodParameters:
Name Flags
hierarchyType
typeAdapter
}
Signature: <T:Ljava/lang/Object;>Lcom/google/gson/TypeAdapter<TT;>;
SourceFile: "TreeTypeAdapter.java"
NestMembers:
com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl com.google.gson.internal.bind.TreeTypeAdapter$SingleTypeFactory
InnerClasses:
private final GsonContextImpl = com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl of com.google.gson.internal.bind.TreeTypeAdapter
private final SingleTypeFactory = com.google.gson.internal.bind.TreeTypeAdapter$SingleTypeFactory of com.google.gson.internal.bind.TreeTypeAdapter