JavaBeanSerializer.smali

.class public Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;
.super Ljava/lang/Object;
.source "JavaBeanSerializer.java"

# interfaces
.implements Lcom/alibaba/fastjson/serializer/ObjectSerializer;


# static fields
.field private static final false_chars:[C

.field private static final true_chars:[C


# instance fields
.field protected features:I

.field private final getters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

.field private final sortedGetters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

.field protected final typeKey:Ljava/lang/String;

.field protected final typeName:Ljava/lang/String;


# direct methods
.method static constructor <clinit>()V
    .registers 1

    const/4 v0, 0x4

    .line 1
    new-array v0, v0, [C

    fill-array-data v0, :array_12

    sput-object v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->true_chars:[C

    const/4 v0, 0x5

    .line 2
    new-array v0, v0, [C

    fill-array-data v0, :array_1a

    sput-object v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->false_chars:[C

    return-void

    nop

    :array_12
    .array-data 2
        0x74s
        0x72s
        0x75s
        0x65s
    .end array-data

    :array_1a
    .array-data 2
        0x66s
        0x61s
        0x6cs
        0x73s
        0x65s
    .end array-data
.end method

.method public constructor <init>(Ljava/lang/Class;)V
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;)V"
        }
    .end annotation

    const/4 v0, 0x0

    .line 1
    invoke-direct {p0, p1, v0}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;-><init>(Ljava/lang/Class;Lcom/alibaba/fastjson/PropertyNamingStrategy;)V

    return-void
.end method

.method public constructor <init>(Ljava/lang/Class;ILjava/util/Map;ZZZZLcom/alibaba/fastjson/PropertyNamingStrategy;)V
    .registers 24
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;I",
            "Ljava/util/Map<",
            "Ljava/lang/String;",
            "Ljava/lang/String;",
            ">;ZZZZ",
            "Lcom/alibaba/fastjson/PropertyNamingStrategy;",
            ")V"
        }
    .end annotation

    move-object v0, p0

    .line 4
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    const/4 v1, 0x0

    .line 5
    iput v1, v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->features:I

    const/4 v2, 0x0

    if-eqz p5, :cond_15

    .line 6
    const-class v3, Lcom/alibaba/fastjson/annotation/JSONType;

    move-object/from16 v13, p1

    .line 7
    invoke-virtual {v13, v3}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v3

    check-cast v3, Lcom/alibaba/fastjson/annotation/JSONType;

    goto :goto_18

    :cond_15
    move-object/from16 v13, p1

    move-object v3, v2

    :goto_18
    if-eqz v3, :cond_92

    .line 8
    invoke-interface {v3}, Lcom/alibaba/fastjson/annotation/JSONType;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;

    move-result-object v4

    invoke-static {v4}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I

    move-result v4

    iput v4, v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->features:I

    .line 9
    invoke-interface {v3}, Lcom/alibaba/fastjson/annotation/JSONType;->typeName()Ljava/lang/String;

    move-result-object v4

    .line 10
    invoke-virtual {v4}, Ljava/lang/String;->length()I

    move-result v5

    if-nez v5, :cond_31

    move-object v4, v2

    move-object v8, v4

    goto :goto_83

    .line 11
    :cond_31
    invoke-virtual/range {p1 .. p1}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;

    move-result-object v5

    move-object v6, v2

    :goto_36
    if-eqz v5, :cond_57

    .line 12
    const-class v7, Ljava/lang/Object;

    if-eq v5, v7, :cond_57

    .line 13
    const-class v7, Lcom/alibaba/fastjson/annotation/JSONType;

    invoke-virtual {v5, v7}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v7

    check-cast v7, Lcom/alibaba/fastjson/annotation/JSONType;

    if-nez v7, :cond_47

    goto :goto_57

    .line 14
    :cond_47
    invoke-interface {v7}, Lcom/alibaba/fastjson/annotation/JSONType;->typeKey()Ljava/lang/String;

    move-result-object v6

    .line 15
    invoke-virtual {v6}, Ljava/lang/String;->length()I

    move-result v7

    if-eqz v7, :cond_52

    goto :goto_57

    .line 16
    :cond_52
    invoke-virtual {v5}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;

    move-result-object v5

    goto :goto_36

    .line 17
    :cond_57
    :goto_57
    invoke-virtual/range {p1 .. p1}, Ljava/lang/Class;->getInterfaces()[Ljava/lang/Class;

    move-result-object v5

    array-length v7, v5

    move-object v8, v6

    const/4 v6, 0x0

    :goto_5e
    if-ge v6, v7, :cond_7a

    aget-object v9, v5, v6

    .line 18
    const-class v10, Lcom/alibaba/fastjson/annotation/JSONType;

    invoke-virtual {v9, v10}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v9

    check-cast v9, Lcom/alibaba/fastjson/annotation/JSONType;

    if-eqz v9, :cond_77

    .line 19
    invoke-interface {v9}, Lcom/alibaba/fastjson/annotation/JSONType;->typeKey()Ljava/lang/String;

    move-result-object v8

    .line 20
    invoke-virtual {v8}, Ljava/lang/String;->length()I

    move-result v9

    if-eqz v9, :cond_77

    goto :goto_7a

    :cond_77
    add-int/lit8 v6, v6, 0x1

    goto :goto_5e

    :cond_7a
    :goto_7a
    if-eqz v8, :cond_83

    .line 21
    invoke-virtual {v8}, Ljava/lang/String;->length()I

    move-result v5

    if-nez v5, :cond_83

    move-object v8, v2

    :cond_83
    :goto_83
    if-nez p8, :cond_8f

    .line 22
    invoke-interface {v3}, Lcom/alibaba/fastjson/annotation/JSONType;->naming()Lcom/alibaba/fastjson/PropertyNamingStrategy;

    move-result-object v5

    .line 23
    sget-object v6, Lcom/alibaba/fastjson/PropertyNamingStrategy;->CamelCase:Lcom/alibaba/fastjson/PropertyNamingStrategy;

    if-eq v5, v6, :cond_8f

    move-object v14, v5

    goto :goto_96

    :cond_8f
    move-object/from16 v14, p8

    goto :goto_96

    :cond_92
    move-object/from16 v14, p8

    move-object v4, v2

    move-object v8, v4

    .line 24
    :goto_96
    iput-object v4, v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->typeName:Ljava/lang/String;

    .line 25
    iput-object v8, v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->typeKey:Ljava/lang/String;

    const/4 v9, 0x0

    move-object/from16 v4, p1

    move/from16 v5, p2

    move/from16 v6, p4

    move-object v7, v3

    move-object/from16 v8, p3

    move/from16 v10, p6

    move/from16 v11, p7

    move-object v12, v14

    .line 26
    invoke-static/range {v4 .. v12}, Lcom/alibaba/fastjson/util/TypeUtils;->computeGetters(Ljava/lang/Class;IZLcom/alibaba/fastjson/annotation/JSONType;Ljava/util/Map;ZZZLcom/alibaba/fastjson/PropertyNamingStrategy;)Ljava/util/List;

    move-result-object v4

    .line 27
    new-instance v5, Ljava/util/ArrayList;

    invoke-direct {v5}, Ljava/util/ArrayList;-><init>()V

    .line 28
    invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v4

    :goto_b6
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v6

    if-eqz v6, :cond_cb

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v6

    check-cast v6, Lcom/alibaba/fastjson/util/FieldInfo;

    .line 29
    new-instance v7, Lcom/alibaba/fastjson/serializer/FieldSerializer;

    invoke-direct {v7, v6}, Lcom/alibaba/fastjson/serializer/FieldSerializer;-><init>(Lcom/alibaba/fastjson/util/FieldInfo;)V

    .line 30
    invoke-interface {v5, v7}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_b6

    .line 31
    :cond_cb
    invoke-interface {v5}, Ljava/util/List;->size()I

    move-result v4

    new-array v4, v4, [Lcom/alibaba/fastjson/serializer/FieldSerializer;

    invoke-interface {v5, v4}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v4

    check-cast v4, [Lcom/alibaba/fastjson/serializer/FieldSerializer;

    iput-object v4, v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->getters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

    if-eqz v3, :cond_df

    .line 32
    invoke-interface {v3}, Lcom/alibaba/fastjson/annotation/JSONType;->orders()[Ljava/lang/String;

    move-result-object v2

    :cond_df
    if-eqz v2, :cond_124

    .line 33
    array-length v2, v2

    if-eqz v2, :cond_124

    const/4 v9, 0x1

    move-object/from16 v4, p1

    move/from16 v5, p2

    move/from16 v6, p4

    move-object v7, v3

    move-object/from16 v8, p3

    move/from16 v10, p6

    move/from16 v11, p7

    move-object v12, v14

    .line 34
    invoke-static/range {v4 .. v12}, Lcom/alibaba/fastjson/util/TypeUtils;->computeGetters(Ljava/lang/Class;IZLcom/alibaba/fastjson/annotation/JSONType;Ljava/util/Map;ZZZLcom/alibaba/fastjson/PropertyNamingStrategy;)Ljava/util/List;

    move-result-object v1

    .line 35
    new-instance v2, Ljava/util/ArrayList;

    invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V

    .line 36
    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_100
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_115

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/alibaba/fastjson/util/FieldInfo;

    .line 37
    new-instance v4, Lcom/alibaba/fastjson/serializer/FieldSerializer;

    invoke-direct {v4, v3}, Lcom/alibaba/fastjson/serializer/FieldSerializer;-><init>(Lcom/alibaba/fastjson/util/FieldInfo;)V

    .line 38
    invoke-interface {v2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_100

    .line 39
    :cond_115
    invoke-interface {v2}, Ljava/util/List;->size()I

    move-result v1

    new-array v1, v1, [Lcom/alibaba/fastjson/serializer/FieldSerializer;

    invoke-interface {v2, v1}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v1

    check-cast v1, [Lcom/alibaba/fastjson/serializer/FieldSerializer;

    iput-object v1, v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->sortedGetters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

    goto :goto_13f

    .line 40
    :cond_124
    iget-object v2, v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->getters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

    array-length v3, v2

    new-array v3, v3, [Lcom/alibaba/fastjson/serializer/FieldSerializer;

    .line 41
    array-length v4, v2

    invoke-static {v2, v1, v3, v1, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 42
    invoke-static {v3}, Ljava/util/Arrays;->sort([Ljava/lang/Object;)V

    .line 43
    iget-object v1, v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->getters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

    invoke-static {v3, v1}, Ljava/util/Arrays;->equals([Ljava/lang/Object;[Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_13d

    .line 44
    iget-object v1, v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->getters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

    iput-object v1, v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->sortedGetters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

    goto :goto_13f

    .line 45
    :cond_13d
    iput-object v3, v0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->sortedGetters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

    :goto_13f
    return-void
.end method

.method public constructor <init>(Ljava/lang/Class;Lcom/alibaba/fastjson/PropertyNamingStrategy;)V
    .registers 12
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;",
            "Lcom/alibaba/fastjson/PropertyNamingStrategy;",
            ")V"
        }
    .end annotation

    .line 2
    invoke-virtual {p1}, Ljava/lang/Class;->getModifiers()I

    move-result v2

    const/4 v3, 0x0

    const/4 v4, 0x0

    const/4 v5, 0x1

    const/4 v6, 0x1

    const/4 v7, 0x1

    move-object v0, p0

    move-object v1, p1

    move-object v8, p2

    invoke-direct/range {v0 .. v8}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;-><init>(Ljava/lang/Class;ILjava/util/Map;ZZZZLcom/alibaba/fastjson/PropertyNamingStrategy;)V

    return-void
.end method

.method public varargs constructor <init>(Ljava/lang/Class;[Ljava/lang/String;)V
    .registers 12
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;[",
            "Ljava/lang/String;",
            ")V"
        }
    .end annotation

    .line 3
    invoke-virtual {p1}, Ljava/lang/Class;->getModifiers()I

    move-result v2

    invoke-static {p2}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->map([Ljava/lang/String;)Ljava/util/Map;

    move-result-object v3

    const/4 v4, 0x0

    const/4 v5, 0x1

    const/4 v6, 0x1

    const/4 v7, 0x1

    const/4 v8, 0x0

    move-object v0, p0

    move-object v1, p1

    invoke-direct/range {v0 .. v8}, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;-><init>(Ljava/lang/Class;ILjava/util/Map;ZZZZLcom/alibaba/fastjson/PropertyNamingStrategy;)V

    return-void
.end method

.method private static varargs map([Ljava/lang/String;)Ljava/util/Map;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "([",
            "Ljava/lang/String;",
            ")",
            "Ljava/util/Map<",
            "Ljava/lang/String;",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation

    .line 1
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    .line 2
    array-length v1, p0

    const/4 v2, 0x0

    :goto_7
    if-ge v2, v1, :cond_11

    aget-object v3, p0, v2

    .line 3
    invoke-interface {v0, v3, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    add-int/lit8 v2, v2, 0x1

    goto :goto_7

    :cond_11
    return-object v0
.end method


# virtual methods
.method public getFieldValuesMap(Ljava/lang/Object;)Ljava/util/Map;
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Object;",
            ")",
            "Ljava/util/Map<",
            "Ljava/lang/String;",
            "Ljava/lang/Object;",
            ">;"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/Exception;
        }
    .end annotation

    .line 1
    new-instance v0, Ljava/util/LinkedHashMap;

    iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->sortedGetters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

    array-length v1, v1

    invoke-direct {v0, v1}, Ljava/util/LinkedHashMap;-><init>(I)V

    .line 2
    iget-object v1, p0, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->sortedGetters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

    array-length v2, v1

    const/4 v3, 0x0

    :goto_c
    if-ge v3, v2, :cond_1e

    aget-object v4, v1, v3

    .line 3
    iget-object v5, v4, Lcom/alibaba/fastjson/serializer/FieldSerializer;->fieldInfo:Lcom/alibaba/fastjson/util/FieldInfo;

    iget-object v5, v5, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;

    invoke-virtual {v4, p1}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->getPropertyValue(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v4

    invoke-interface {v0, v5, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    add-int/lit8 v3, v3, 0x1

    goto :goto_c

    :cond_1e
    return-object v0
.end method

.method public write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;)V
    .registers 40
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation

    move-object/from16 v1, p0

    move-object/from16 v2, p1

    move-object/from16 v3, p2

    move-object/from16 v4, p3

    move-object/from16 v5, p4

    .line 1
    iget-object v6, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;

    if-nez v3, :cond_12

    .line 2
    invoke-virtual {v6}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V

    return-void

    .line 3
    :cond_12
    iget-object v7, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;

    if-eqz v7, :cond_1f

    iget v7, v7, Lcom/alibaba/fastjson/serializer/SerialContext;->features:I

    sget-object v8, Lcom/alibaba/fastjson/serializer/SerializerFeature;->DisableCircularReferenceDetect:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v8, v8, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v7, v8

    if-nez v7, :cond_2d

    :cond_1f
    iget-object v7, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->references:Ljava/util/IdentityHashMap;

    if-eqz v7, :cond_2d

    .line 4
    invoke-virtual {v7, v3}, Ljava/util/IdentityHashMap;->containsKey(Ljava/lang/Object;)Z

    move-result v7

    if-eqz v7, :cond_2d

    .line 5
    invoke-virtual/range {p1 .. p2}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->writeReference(Ljava/lang/Object;)V

    return-void

    .line 6
    :cond_2d
    iget v7, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v8, Lcom/alibaba/fastjson/serializer/SerializerFeature;->SortField:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v8, v8, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v7, v8

    if-eqz v7, :cond_39

    .line 7
    iget-object v7, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->sortedGetters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

    goto :goto_3b

    .line 8
    :cond_39
    iget-object v7, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->getters:[Lcom/alibaba/fastjson/serializer/FieldSerializer;

    .line 9
    :goto_3b
    iget-object v8, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;

    .line 10
    iget v9, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v10, Lcom/alibaba/fastjson/serializer/SerializerFeature;->DisableCircularReferenceDetect:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v10, v10, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v9, v10

    if-nez v9, :cond_61

    .line 11
    new-instance v9, Lcom/alibaba/fastjson/serializer/SerialContext;

    iget v10, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->features:I

    invoke-direct {v9, v8, v3, v4, v10}, Lcom/alibaba/fastjson/serializer/SerialContext;-><init>(Lcom/alibaba/fastjson/serializer/SerialContext;Ljava/lang/Object;Ljava/lang/Object;I)V

    iput-object v9, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;

    .line 12
    iget-object v9, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->references:Ljava/util/IdentityHashMap;

    if-nez v9, :cond_5a

    .line 13
    new-instance v9, Ljava/util/IdentityHashMap;

    invoke-direct {v9}, Ljava/util/IdentityHashMap;-><init>()V

    iput-object v9, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->references:Ljava/util/IdentityHashMap;

    .line 14
    :cond_5a
    iget-object v9, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->references:Ljava/util/IdentityHashMap;

    iget-object v10, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;

    invoke-virtual {v9, v3, v10}, Ljava/util/IdentityHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 15
    :cond_61
    iget v9, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->features:I

    sget-object v10, Lcom/alibaba/fastjson/serializer/SerializerFeature;->BeanToArray:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v10, v10, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v9, v10

    const/4 v11, 0x0

    const/4 v12, 0x1

    if-nez v9, :cond_74

    iget v9, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    and-int/2addr v9, v10

    if-eqz v9, :cond_72

    goto :goto_74

    :cond_72
    const/4 v9, 0x0

    goto :goto_75

    :cond_74
    :goto_74
    const/4 v9, 0x1

    :goto_75
    if-eqz v9, :cond_7a

    const/16 v10, 0x5b

    goto :goto_7c

    :cond_7a
    const/16 v10, 0x7b

    :goto_7c
    if-eqz v9, :cond_81

    const/16 v13, 0x5d

    goto :goto_83

    :cond_81
    const/16 v13, 0x7d

    .line 16
    :goto_83
    :try_start_83
    iget v14, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    add-int/2addr v14, v12

    .line 17
    iget-object v15, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    array-length v15, v15
    :try_end_89
    .catch Ljava/lang/Exception; {:try_start_83 .. :try_end_89} :catch_641
    .catchall {:try_start_83 .. :try_end_89} :catchall_63d

    if-le v14, v15, :cond_a2

    .line 18
    :try_start_8b
    iget-object v15, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;

    if-nez v15, :cond_93

    .line 19
    invoke-virtual {v6, v14}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V

    goto :goto_a2

    .line 20
    :cond_93
    invoke-virtual {v6}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->flush()V
    :try_end_96
    .catch Ljava/lang/Exception; {:try_start_8b .. :try_end_96} :catch_9d
    .catchall {:try_start_8b .. :try_end_96} :catchall_98

    const/4 v14, 0x1

    goto :goto_a2

    :catchall_98
    move-exception v0

    move-object v4, v0

    move-object v3, v8

    goto/16 :goto_667

    :catch_9d
    move-exception v0

    move-object v4, v0

    move-object v3, v8

    goto/16 :goto_644

    .line 21
    :cond_a2
    :goto_a2
    :try_start_a2
    iget-object v15, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    iget v12, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    aput-char v10, v15, v12

    .line 22
    iput v14, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    .line 23
    array-length v10, v7
    :try_end_ab
    .catch Ljava/lang/Exception; {:try_start_a2 .. :try_end_ab} :catch_641
    .catchall {:try_start_a2 .. :try_end_ab} :catchall_63d

    if-lez v10, :cond_bc

    :try_start_ad
    iget v10, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v12, Lcom/alibaba/fastjson/serializer/SerializerFeature;->PrettyFormat:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v12, v12, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v10, v12

    if-eqz v10, :cond_bc

    .line 24
    invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->incrementIndent()V

    .line 25
    invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->println()V
    :try_end_bc
    .catch Ljava/lang/Exception; {:try_start_ad .. :try_end_bc} :catch_9d
    .catchall {:try_start_ad .. :try_end_bc} :catchall_98

    .line 26
    :cond_bc
    :try_start_bc
    iget v10, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->features:I

    sget-object v12, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteClassName:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v12, v12, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
    :try_end_c2
    .catch Ljava/lang/Exception; {:try_start_bc .. :try_end_c2} :catch_641
    .catchall {:try_start_bc .. :try_end_c2} :catchall_63d

    and-int/2addr v10, v12

    if-nez v10, :cond_e6

    :try_start_c5
    iget v10, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v12, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteClassName:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v12, v12, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v10, v12

    if-eqz v10, :cond_e4

    if-nez v5, :cond_e6

    iget v10, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v12, Lcom/alibaba/fastjson/serializer/SerializerFeature;->NotWriteRootClassName:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v12, v12, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v10, v12

    if-eqz v10, :cond_e6

    iget-object v10, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;

    if-eqz v10, :cond_e4

    iget-object v10, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;

    iget-object v10, v10, Lcom/alibaba/fastjson/serializer/SerialContext;->parent:Lcom/alibaba/fastjson/serializer/SerialContext;

    if-eqz v10, :cond_e4

    goto :goto_e6

    :cond_e4
    const/4 v10, 0x0

    goto :goto_e7

    :cond_e6
    :goto_e6
    const/4 v10, 0x1

    :goto_e7
    if-eqz v10, :cond_10e

    .line 27
    invoke-virtual/range {p2 .. p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;

    move-result-object v10

    if-eq v10, v5, :cond_10e

    .line 28
    iget-object v5, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->typeKey:Ljava/lang/String;

    if-eqz v5, :cond_f6

    iget-object v5, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->typeKey:Ljava/lang/String;

    goto :goto_fa

    :cond_f6
    iget-object v5, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->config:Lcom/alibaba/fastjson/serializer/SerializeConfig;

    iget-object v5, v5, Lcom/alibaba/fastjson/serializer/SerializeConfig;->typeKey:Ljava/lang/String;

    :goto_fa
    invoke-virtual {v6, v5, v11}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeFieldName(Ljava/lang/String;Z)V

    .line 29
    iget-object v5, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->typeName:Ljava/lang/String;

    if-nez v5, :cond_109

    .line 30
    invoke-virtual/range {p2 .. p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;

    move-result-object v5

    invoke-virtual {v5}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object v5

    .line 31
    :cond_109
    invoke-virtual {v2, v5}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/String;)V
    :try_end_10c
    .catch Ljava/lang/Exception; {:try_start_c5 .. :try_end_10c} :catch_9d
    .catchall {:try_start_c5 .. :try_end_10c} :catchall_98

    const/4 v5, 0x1

    goto :goto_10f

    :cond_10e
    const/4 v5, 0x0

    :goto_10f
    const/16 v10, 0x2c

    if-eqz v5, :cond_116

    const/16 v5, 0x2c

    goto :goto_117

    :cond_116
    const/4 v5, 0x0

    .line 32
    :goto_117
    :try_start_117
    iget-object v12, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->beforeFilters:Ljava/util/List;
    :try_end_119
    .catch Ljava/lang/Exception; {:try_start_117 .. :try_end_119} :catch_641
    .catchall {:try_start_117 .. :try_end_119} :catchall_63d

    if-eqz v12, :cond_132

    .line 33
    :try_start_11b
    iget-object v12, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->beforeFilters:Ljava/util/List;

    invoke-interface {v12}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v12

    :goto_121
    invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z

    move-result v14

    if-eqz v14, :cond_132

    invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v14

    check-cast v14, Lcom/alibaba/fastjson/serializer/BeforeFilter;

    .line 34
    invoke-virtual {v14, v2, v3, v5}, Lcom/alibaba/fastjson/serializer/BeforeFilter;->writeBefore(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;C)C

    move-result v5
    :try_end_131
    .catch Ljava/lang/Exception; {:try_start_11b .. :try_end_131} :catch_9d
    .catchall {:try_start_11b .. :try_end_131} :catchall_98

    goto :goto_121

    :cond_132
    if-ne v5, v10, :cond_136

    const/4 v5, 0x1

    goto :goto_137

    :cond_136
    const/4 v5, 0x0

    .line 35
    :goto_137
    :try_start_137
    iget v12, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v14, Lcom/alibaba/fastjson/serializer/SerializerFeature;->QuoteFieldNames:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v14, v14, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
    :try_end_13d
    .catch Ljava/lang/Exception; {:try_start_137 .. :try_end_13d} :catch_641
    .catchall {:try_start_137 .. :try_end_13d} :catchall_63d

    and-int/2addr v12, v14

    if-eqz v12, :cond_14b

    :try_start_140
    iget v12, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v14, Lcom/alibaba/fastjson/serializer/SerializerFeature;->UseSingleQuotes:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v14, v14, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
    :try_end_146
    .catch Ljava/lang/Exception; {:try_start_140 .. :try_end_146} :catch_9d
    .catchall {:try_start_140 .. :try_end_146} :catchall_98

    and-int/2addr v12, v14

    if-nez v12, :cond_14b

    const/4 v12, 0x1

    goto :goto_14c

    :cond_14b
    const/4 v12, 0x0

    .line 36
    :goto_14c
    :try_start_14c
    iget v14, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v15, Lcom/alibaba/fastjson/serializer/SerializerFeature;->UseSingleQuotes:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v15, v15, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v14, v15

    if-eqz v14, :cond_157

    const/4 v14, 0x1

    goto :goto_158

    :cond_157
    const/4 v14, 0x0

    .line 37
    :goto_158
    iget v15, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v10, Lcom/alibaba/fastjson/serializer/SerializerFeature;->NotWriteDefaultValue:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v10, v10, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v10, v15

    if-eqz v10, :cond_163

    const/4 v10, 0x1

    goto :goto_164

    :cond_163
    const/4 v10, 0x0

    .line 38
    :goto_164
    iget-object v15, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyFilters:Ljava/util/List;

    .line 39
    iget-object v11, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->nameFilters:Ljava/util/List;

    move/from16 v16, v5

    .line 40
    iget-object v5, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->valueFilters:Ljava/util/List;

    .line 41
    iget-object v4, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->propertyPreFilters:Ljava/util/List;
    :try_end_16e
    .catch Ljava/lang/Exception; {:try_start_14c .. :try_end_16e} :catch_641
    .catchall {:try_start_14c .. :try_end_16e} :catchall_63d

    move-object/from16 v17, v8

    move/from16 v18, v13

    const/4 v8, 0x0

    .line 42
    :goto_173
    :try_start_173
    array-length v13, v7
    :try_end_174
    .catch Ljava/lang/Exception; {:try_start_173 .. :try_end_174} :catch_639
    .catchall {:try_start_173 .. :try_end_174} :catchall_635

    if-ge v8, v13, :cond_5d5

    .line 43
    :try_start_176
    aget-object v13, v7, v8

    move-object/from16 v19, v7

    .line 44
    iget-object v7, v13, Lcom/alibaba/fastjson/serializer/FieldSerializer;->fieldInfo:Lcom/alibaba/fastjson/util/FieldInfo;

    move/from16 v20, v8

    .line 45
    iget-object v8, v7, Lcom/alibaba/fastjson/util/FieldInfo;->fieldClass:Ljava/lang/Class;

    move/from16 v21, v14

    .line 46
    iget-object v14, v7, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;

    move/from16 v22, v12

    .line 47
    iget v12, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    move/from16 v23, v10

    sget-object v10, Lcom/alibaba/fastjson/serializer/SerializerFeature;->SkipTransientField:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v10, v10, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v10, v12

    if-eqz v10, :cond_19a

    .line 48
    iget-object v10, v7, Lcom/alibaba/fastjson/util/FieldInfo;->field:Ljava/lang/reflect/Field;

    if-eqz v10, :cond_19a

    .line 49
    iget-boolean v10, v7, Lcom/alibaba/fastjson/util/FieldInfo;->fieldTransient:Z

    if-eqz v10, :cond_19a

    goto :goto_1c4

    .line 50
    :cond_19a
    iget-object v10, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->typeKey:Ljava/lang/String;

    if-eqz v10, :cond_1a7

    iget-object v10, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->typeKey:Ljava/lang/String;

    invoke-virtual {v10, v14}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v10

    if-eqz v10, :cond_1a7

    goto :goto_1c4

    :cond_1a7
    if-eqz v4, :cond_1c1

    .line 51
    invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v10

    :cond_1ad
    invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z

    move-result v12

    if-eqz v12, :cond_1c1

    invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v12

    check-cast v12, Lcom/alibaba/fastjson/serializer/PropertyPreFilter;

    .line 52
    invoke-interface {v12, v2, v3, v14}, Lcom/alibaba/fastjson/serializer/PropertyPreFilter;->apply(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/String;)Z

    move-result v12

    if-nez v12, :cond_1ad

    const/4 v10, 0x0

    goto :goto_1c2

    :cond_1c1
    const/4 v10, 0x1

    :goto_1c2
    if-nez v10, :cond_1ce

    :goto_1c4
    move-object/from16 v29, v4

    move-object/from16 v32, v5

    move-object/from16 v30, v11

    move-object/from16 v31, v15

    goto/16 :goto_41c

    :cond_1ce
    const/4 v10, 0x0

    const-wide/16 v24, 0x0

    .line 53
    iget-boolean v12, v7, Lcom/alibaba/fastjson/util/FieldInfo;->fieldAccess:Z

    if-eqz v12, :cond_20e

    .line 54
    sget-object v12, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;

    if-ne v8, v12, :cond_1e7

    .line 55
    iget-object v12, v7, Lcom/alibaba/fastjson/util/FieldInfo;->field:Ljava/lang/reflect/Field;

    invoke-virtual {v12, v3}, Ljava/lang/reflect/Field;->getInt(Ljava/lang/Object;)I

    move-result v12

    move-object/from16 v27, v10

    const/4 v10, 0x1

    :goto_1e2
    const/16 v26, 0x0

    :goto_1e4
    const/16 v28, 0x0

    goto :goto_21a

    .line 56
    :cond_1e7
    sget-object v12, Ljava/lang/Long;->TYPE:Ljava/lang/Class;

    if-ne v8, v12, :cond_1f6

    .line 57
    iget-object v12, v7, Lcom/alibaba/fastjson/util/FieldInfo;->field:Ljava/lang/reflect/Field;

    invoke-virtual {v12, v3}, Ljava/lang/reflect/Field;->getLong(Ljava/lang/Object;)J

    move-result-wide v24

    move-object/from16 v27, v10

    const/4 v10, 0x1

    const/4 v12, 0x0

    goto :goto_1e2

    .line 58
    :cond_1f6
    sget-object v12, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;

    if-ne v8, v12, :cond_207

    .line 59
    iget-object v12, v7, Lcom/alibaba/fastjson/util/FieldInfo;->field:Ljava/lang/reflect/Field;

    invoke-virtual {v12, v3}, Ljava/lang/reflect/Field;->getBoolean(Ljava/lang/Object;)Z

    move-result v12

    move-object/from16 v27, v10

    move/from16 v26, v12

    const/4 v10, 0x1

    const/4 v12, 0x0

    goto :goto_1e4

    .line 60
    :cond_207
    iget-object v10, v7, Lcom/alibaba/fastjson/util/FieldInfo;->field:Ljava/lang/reflect/Field;

    invoke-virtual {v10, v3}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v10

    goto :goto_212

    .line 61
    :cond_20e
    invoke-virtual {v13, v3}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->getPropertyValue(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v10

    :goto_212
    move-object/from16 v27, v10

    const/4 v10, 0x0

    const/4 v12, 0x0

    const/16 v26, 0x0

    const/16 v28, 0x1

    :goto_21a
    if-eqz v15, :cond_269

    if-eqz v10, :cond_23f

    move-object/from16 v29, v4

    .line 62
    sget-object v4, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;

    if-ne v8, v4, :cond_22d

    .line 63
    invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v27

    :goto_228
    move-object/from16 v4, v27

    const/16 v28, 0x1

    goto :goto_243

    .line 64
    :cond_22d
    sget-object v4, Ljava/lang/Long;->TYPE:Ljava/lang/Class;

    if-ne v8, v4, :cond_236

    .line 65
    invoke-static/range {v24 .. v25}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;

    move-result-object v27

    goto :goto_228

    .line 66
    :cond_236
    sget-object v4, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;

    if-ne v8, v4, :cond_241

    .line 67
    invoke-static/range {v26 .. v26}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v27

    goto :goto_228

    :cond_23f
    move-object/from16 v29, v4

    :cond_241
    move-object/from16 v4, v27

    .line 68
    :goto_243
    invoke-interface {v15}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v27

    :goto_247
    invoke-interface/range {v27 .. v27}, Ljava/util/Iterator;->hasNext()Z

    move-result v30

    if-eqz v30, :cond_264

    invoke-interface/range {v27 .. v27}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v30

    move-object/from16 v31, v15

    move-object/from16 v15, v30

    check-cast v15, Lcom/alibaba/fastjson/serializer/PropertyFilter;

    .line 69
    invoke-interface {v15, v3, v14, v4}, Lcom/alibaba/fastjson/serializer/PropertyFilter;->apply(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Z

    move-result v15

    if-nez v15, :cond_261

    move-object/from16 v27, v4

    const/4 v4, 0x0

    goto :goto_26e

    :cond_261
    move-object/from16 v15, v31

    goto :goto_247

    :cond_264
    move-object/from16 v31, v15

    move-object/from16 v27, v4

    goto :goto_26d

    :cond_269
    move-object/from16 v29, v4

    move-object/from16 v31, v15

    :goto_26d
    const/4 v4, 0x1

    :goto_26e
    if-nez v4, :cond_276

    move-object/from16 v32, v5

    move-object/from16 v30, v11

    goto/16 :goto_41c

    :cond_276
    if-eqz v11, :cond_2bc

    if-eqz v10, :cond_299

    if-nez v28, :cond_299

    .line 70
    sget-object v4, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;

    if-ne v8, v4, :cond_287

    .line 71
    invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v4

    :goto_284
    const/16 v28, 0x1

    goto :goto_29b

    .line 72
    :cond_287
    sget-object v4, Ljava/lang/Long;->TYPE:Ljava/lang/Class;

    if-ne v8, v4, :cond_290

    .line 73
    invoke-static/range {v24 .. v25}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;

    move-result-object v4

    goto :goto_284

    .line 74
    :cond_290
    sget-object v4, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;

    if-ne v8, v4, :cond_299

    .line 75
    invoke-static/range {v26 .. v26}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v4

    goto :goto_284

    :cond_299
    move-object/from16 v4, v27

    .line 76
    :goto_29b
    invoke-interface {v11}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v15

    move-object/from16 v30, v11

    move-object v11, v14

    :goto_2a2
    invoke-interface {v15}, Ljava/util/Iterator;->hasNext()Z

    move-result v27

    if-eqz v27, :cond_2b9

    invoke-interface {v15}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v27

    move-object/from16 v32, v15

    move-object/from16 v15, v27

    check-cast v15, Lcom/alibaba/fastjson/serializer/NameFilter;

    .line 77
    invoke-interface {v15, v3, v11, v4}, Lcom/alibaba/fastjson/serializer/NameFilter;->process(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v11

    move-object/from16 v15, v32

    goto :goto_2a2

    :cond_2b9
    move-object/from16 v27, v4

    goto :goto_2bf

    :cond_2bc
    move-object/from16 v30, v11

    move-object v11, v14

    :goto_2bf
    if-eqz v5, :cond_304

    if-eqz v10, :cond_2e2

    if-nez v28, :cond_2e2

    .line 78
    sget-object v4, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;

    if-ne v8, v4, :cond_2d0

    .line 79
    invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v27

    :goto_2cd
    const/16 v28, 0x1

    goto :goto_2e2

    .line 80
    :cond_2d0
    sget-object v4, Ljava/lang/Long;->TYPE:Ljava/lang/Class;

    if-ne v8, v4, :cond_2d9

    .line 81
    invoke-static/range {v24 .. v25}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;

    move-result-object v27

    goto :goto_2cd

    .line 82
    :cond_2d9
    sget-object v4, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;

    if-ne v8, v4, :cond_2e2

    .line 83
    invoke-static/range {v26 .. v26}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v27

    goto :goto_2cd

    .line 84
    :cond_2e2
    :goto_2e2
    invoke-interface {v5}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v4

    move-object/from16 v15, v27

    :goto_2e8
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v32

    if-eqz v32, :cond_2ff

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v32

    move-object/from16 v33, v4

    move-object/from16 v4, v32

    check-cast v4, Lcom/alibaba/fastjson/serializer/ValueFilter;

    .line 85
    invoke-interface {v4, v3, v14, v15}, Lcom/alibaba/fastjson/serializer/ValueFilter;->process(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v15
    :try_end_2fc
    .catch Ljava/lang/Exception; {:try_start_176 .. :try_end_2fc} :catch_5cf
    .catchall {:try_start_176 .. :try_end_2fc} :catchall_5c9

    move-object/from16 v4, v33

    goto :goto_2e8

    :cond_2ff
    move-object/from16 v4, v27

    move-object/from16 v27, v15

    goto :goto_306

    :cond_304
    move-object/from16 v4, v27

    :goto_306
    const-string v15, ""

    if-eqz v28, :cond_3d7

    if-nez v27, :cond_3d7

    move-object/from16 v32, v5

    .line 86
    :try_start_30e
    iget v5, v7, Lcom/alibaba/fastjson/util/FieldInfo;->serialzeFeatures:I

    iget v3, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->features:I

    or-int/2addr v3, v5

    iget v5, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    or-int/2addr v3, v5

    .line 87
    const-class v5, Ljava/lang/Boolean;

    if-ne v8, v5, :cond_345

    .line 88
    sget-object v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteNullBooleanAsFalse:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v5, v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    move-object/from16 v33, v7

    .line 89
    sget-object v7, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteMapNullValue:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v7, v7, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    or-int/2addr v7, v5

    if-nez v9, :cond_334

    and-int v34, v3, v7

    if-nez v34, :cond_334

    move-object/from16 v34, v15

    .line 90
    iget v15, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    and-int/2addr v7, v15

    if-nez v7, :cond_336

    goto/16 :goto_41c

    :cond_334
    move-object/from16 v34, v15

    :cond_336
    and-int/2addr v3, v5

    if-nez v3, :cond_33e

    .line 91
    iget v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    and-int/2addr v3, v5

    if-eqz v3, :cond_3dd

    :cond_33e
    const/4 v3, 0x0

    .line 92
    invoke-static {v3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v27

    goto/16 :goto_3dd

    :cond_345
    move-object/from16 v33, v7

    move-object/from16 v34, v15

    .line 93
    const-class v5, Ljava/lang/String;

    if-ne v8, v5, :cond_36f

    .line 94
    sget-object v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteNullStringAsEmpty:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v5, v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    .line 95
    sget-object v7, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteMapNullValue:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v7, v7, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    or-int/2addr v7, v5

    if-nez v9, :cond_363

    and-int v15, v3, v7

    if-nez v15, :cond_363

    .line 96
    iget v15, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    and-int/2addr v7, v15

    if-nez v7, :cond_363

    goto/16 :goto_41c

    :cond_363
    and-int/2addr v3, v5

    if-nez v3, :cond_36b

    .line 97
    iget v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    and-int/2addr v3, v5

    if-eqz v3, :cond_3dd

    :cond_36b
    move-object/from16 v27, v34

    goto/16 :goto_3dd

    .line 98
    :cond_36f
    const-class v5, Ljava/lang/Number;

    invoke-virtual {v5, v8}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z

    move-result v5

    if-eqz v5, :cond_39b

    .line 99
    sget-object v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteNullNumberAsZero:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v5, v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    .line 100
    sget-object v7, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteMapNullValue:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v7, v7, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    or-int/2addr v7, v5

    if-nez v9, :cond_38d

    and-int v15, v3, v7

    if-nez v15, :cond_38d

    .line 101
    iget v15, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    and-int/2addr v7, v15

    if-nez v7, :cond_38d

    goto/16 :goto_41c

    :cond_38d
    and-int/2addr v3, v5

    if-nez v3, :cond_395

    .line 102
    iget v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    and-int/2addr v3, v5

    if-eqz v3, :cond_3dd

    :cond_395
    const/4 v3, 0x0

    .line 103
    invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v27

    goto :goto_3dd

    .line 104
    :cond_39b
    const-class v5, Ljava/util/Collection;

    invoke-virtual {v5, v8}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z

    move-result v5

    if-eqz v5, :cond_3c8

    .line 105
    sget-object v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteNullListAsEmpty:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v5, v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    .line 106
    sget-object v7, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteMapNullValue:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v7, v7, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    or-int/2addr v7, v5

    if-nez v9, :cond_3b9

    and-int v15, v3, v7

    if-nez v15, :cond_3b9

    .line 107
    iget v15, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    and-int/2addr v7, v15

    if-nez v7, :cond_3b9

    goto/16 :goto_41c

    :cond_3b9
    and-int/2addr v3, v5

    if-nez v3, :cond_3c1

    .line 108
    iget v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    and-int/2addr v3, v5

    if-eqz v3, :cond_3dd

    .line 109
    :cond_3c1
    invoke-static {}, Ljava/util/Collections;->emptyList()Ljava/util/List;

    move-result-object v3

    move-object/from16 v27, v3

    goto :goto_3dd

    :cond_3c8
    if-nez v9, :cond_3dd

    .line 110
    iget-boolean v3, v13, Lcom/alibaba/fastjson/serializer/FieldSerializer;->writeNull:Z

    if-nez v3, :cond_3dd

    sget-object v3, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteMapNullValue:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    invoke-virtual {v6, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z

    move-result v3

    if-nez v3, :cond_3dd

    goto :goto_41c

    :cond_3d7
    move-object/from16 v32, v5

    move-object/from16 v33, v7

    move-object/from16 v34, v15

    :cond_3dd
    :goto_3dd
    move-object/from16 v3, v27

    if-eqz v28, :cond_421

    if-eqz v3, :cond_421

    if-eqz v23, :cond_421

    .line 111
    sget-object v5, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;

    if-eq v8, v5, :cond_3fd

    sget-object v5, Ljava/lang/Short;->TYPE:Ljava/lang/Class;

    if-eq v8, v5, :cond_3fd

    sget-object v5, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;

    if-eq v8, v5, :cond_3fd

    sget-object v5, Ljava/lang/Long;->TYPE:Ljava/lang/Class;

    if-eq v8, v5, :cond_3fd

    sget-object v5, Ljava/lang/Float;->TYPE:Ljava/lang/Class;

    if-eq v8, v5, :cond_3fd

    sget-object v5, Ljava/lang/Double;->TYPE:Ljava/lang/Class;

    if-ne v8, v5, :cond_40b

    :cond_3fd
    instance-of v5, v3, Ljava/lang/Number;

    if-eqz v5, :cond_40b

    move-object v5, v3

    check-cast v5, Ljava/lang/Number;

    .line 112
    invoke-virtual {v5}, Ljava/lang/Number;->byteValue()B

    move-result v5

    if-nez v5, :cond_40b

    goto :goto_41c

    .line 113
    :cond_40b
    sget-object v5, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;

    if-ne v8, v5, :cond_421

    instance-of v5, v3, Ljava/lang/Boolean;

    if-eqz v5, :cond_421

    move-object v5, v3

    check-cast v5, Ljava/lang/Boolean;

    .line 114
    invoke-virtual {v5}, Ljava/lang/Boolean;->booleanValue()Z

    move-result v5

    if-nez v5, :cond_421

    :goto_41c
    const/4 v4, 0x0

    const/16 v27, 0x2c

    goto/16 :goto_5b3

    :cond_421
    if-eqz v16, :cond_44f

    .line 115
    iget v5, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    const/4 v7, 0x1

    add-int/2addr v5, v7

    .line 116
    iget-object v7, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    array-length v7, v7

    if-le v5, v7, :cond_438

    .line 117
    iget-object v7, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;

    if-nez v7, :cond_434

    .line 118
    invoke-virtual {v6, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V

    goto :goto_438

    .line 119
    :cond_434
    invoke-virtual {v6}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->flush()V

    const/4 v5, 0x1

    .line 120
    :cond_438
    :goto_438
    iget-object v7, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    iget v15, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    const/16 v27, 0x2c

    aput-char v27, v7, v15

    .line 121
    iput v5, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    .line 122
    iget v5, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v7, Lcom/alibaba/fastjson/serializer/SerializerFeature;->PrettyFormat:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v7, v7, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v5, v7

    if-eqz v5, :cond_451

    .line 123
    invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->println()V

    goto :goto_451

    :cond_44f
    const/16 v27, 0x2c

    :cond_451
    :goto_451
    if-eq v11, v14, :cond_45f

    if-nez v9, :cond_459

    const/4 v4, 0x1

    .line 124
    invoke-virtual {v6, v11, v4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeFieldName(Ljava/lang/String;Z)V

    .line 125
    :cond_459
    invoke-virtual {v2, v3}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/Object;)V

    :cond_45c
    :goto_45c
    const/4 v4, 0x0

    goto/16 :goto_5b1

    :cond_45f
    if-eq v4, v3, :cond_46a

    if-nez v9, :cond_466

    .line 126
    invoke-virtual {v13, v2}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->writePrefix(Lcom/alibaba/fastjson/serializer/JSONSerializer;)V

    .line 127
    :cond_466
    invoke-virtual {v2, v3}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->write(Ljava/lang/Object;)V

    goto :goto_45c

    :cond_46a
    if-nez v9, :cond_4b1

    if-eqz v22, :cond_4ae

    .line 128
    iget-object v4, v13, Lcom/alibaba/fastjson/serializer/FieldSerializer;->name_chars:[C

    .line 129
    array-length v5, v4

    .line 130
    iget v7, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    add-int/2addr v7, v5

    .line 131
    iget-object v11, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    array-length v11, v11

    if-le v7, v11, :cond_4a1

    .line 132
    iget-object v11, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;

    if-nez v11, :cond_481

    .line 133
    invoke-virtual {v6, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V

    goto :goto_4a1

    :cond_481
    move v7, v5

    const/4 v5, 0x0

    .line 134
    :cond_483
    iget-object v11, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    array-length v11, v11

    iget v14, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    sub-int/2addr v11, v14

    .line 135
    iget-object v14, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    iget v15, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    invoke-static {v4, v5, v14, v15, v11}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 136
    iget-object v14, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    array-length v14, v14

    iput v14, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    .line 137
    invoke-virtual {v6}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->flush()V

    sub-int/2addr v7, v11

    add-int/2addr v5, v11

    .line 138
    iget-object v11, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    array-length v11, v11

    if-gt v7, v11, :cond_483

    move v11, v7

    goto :goto_4a4

    :cond_4a1
    :goto_4a1
    move v11, v7

    move v7, v5

    const/4 v5, 0x0

    .line 139
    :goto_4a4
    iget-object v14, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    iget v15, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    invoke-static {v4, v5, v14, v15, v7}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 140
    iput v11, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    goto :goto_4b1

    .line 141
    :cond_4ae
    invoke-virtual {v13, v2}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->writePrefix(Lcom/alibaba/fastjson/serializer/JSONSerializer;)V

    :cond_4b1
    :goto_4b1
    if-eqz v10, :cond_52f

    if-nez v28, :cond_52f

    .line 142
    sget-object v3, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;

    if-ne v8, v3, :cond_502

    const/high16 v3, -0x80000000

    if-ne v12, v3, :cond_4c3

    const-string v3, "-2147483648"

    .line 143
    invoke-virtual {v6, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V

    goto :goto_45c

    :cond_4c3
    if-gez v12, :cond_4c7

    neg-int v3, v12

    goto :goto_4c8

    :cond_4c7
    move v3, v12

    :goto_4c8
    const/4 v4, 0x0

    .line 144
    :goto_4c9
    sget-object v5, Lcom/alibaba/fastjson/serializer/SerializeWriter;->sizeTable:[I

    aget v5, v5, v4

    if-gt v3, v5, :cond_4ff

    add-int/lit8 v4, v4, 0x1

    if-gez v12, :cond_4d5

    add-int/lit8 v4, v4, 0x1

    .line 145
    :cond_4d5
    iget v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    add-int/2addr v3, v4

    .line 146
    iget-object v5, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    array-length v5, v5

    if-le v3, v5, :cond_4f2

    .line 147
    iget-object v5, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;

    if-nez v5, :cond_4e5

    .line 148
    invoke-virtual {v6, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V

    goto :goto_4f2

    .line 149
    :cond_4e5
    new-array v5, v4, [C

    int-to-long v7, v12

    .line 150
    invoke-static {v7, v8, v4, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->getChars(JI[C)V

    .line 151
    array-length v4, v5

    const/4 v7, 0x0

    invoke-virtual {v6, v5, v7, v4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write([CII)V

    const/4 v4, 0x1

    goto :goto_4f3

    :cond_4f2
    :goto_4f2
    const/4 v4, 0x0

    :goto_4f3
    if-nez v4, :cond_45c

    int-to-long v4, v12

    .line 152
    iget-object v7, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    invoke-static {v4, v5, v3, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->getChars(JI[C)V

    .line 153
    iput v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    goto/16 :goto_45c

    :cond_4ff
    add-int/lit8 v4, v4, 0x1

    goto :goto_4c9

    .line 154
    :cond_502
    sget-object v3, Ljava/lang/Long;->TYPE:Ljava/lang/Class;

    if-ne v8, v3, :cond_50f

    .line 155
    iget-object v3, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;

    move-wide/from16 v4, v24

    invoke-virtual {v3, v4, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeLong(J)V

    goto/16 :goto_45c

    .line 156
    :cond_50f
    sget-object v3, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;

    if-ne v8, v3, :cond_45c

    if-eqz v26, :cond_522

    .line 157
    iget-object v3, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;

    sget-object v4, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->true_chars:[C

    sget-object v5, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->true_chars:[C

    array-length v5, v5

    const/4 v7, 0x0

    invoke-virtual {v3, v4, v7, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write([CII)V

    goto/16 :goto_45c

    .line 158
    :cond_522
    iget-object v3, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;

    sget-object v4, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->false_chars:[C

    sget-object v5, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->false_chars:[C

    array-length v5, v5

    const/4 v7, 0x0

    invoke-virtual {v3, v4, v7, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write([CII)V

    goto/16 :goto_45c

    :cond_52f
    if-nez v9, :cond_5ad

    .line 159
    const-class v4, Ljava/lang/String;

    if-ne v8, v4, :cond_569

    .line 160
    iget v4, v13, Lcom/alibaba/fastjson/serializer/FieldSerializer;->features:I

    iget v5, v1, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;->features:I

    or-int/2addr v4, v5

    if-nez v3, :cond_559

    .line 161
    iget v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteNullStringAsEmpty:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v5, v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v3, v5

    if-nez v3, :cond_552

    sget-object v3, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteNullStringAsEmpty:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v3, v3, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v3, v4

    if-eqz v3, :cond_54d

    goto :goto_552

    .line 162
    :cond_54d
    invoke-virtual {v6}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V

    goto/16 :goto_45c

    :cond_552
    :goto_552
    move-object/from16 v3, v34

    .line 163
    invoke-virtual {v6, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeString(Ljava/lang/String;)V

    goto/16 :goto_45c

    .line 164
    :cond_559
    check-cast v3, Ljava/lang/String;

    if-eqz v21, :cond_562

    .line 165
    invoke-virtual {v6, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeStringWithSingleQuote(Ljava/lang/String;)V

    goto/16 :goto_45c

    :cond_562
    const/4 v4, 0x0

    const/4 v5, 0x1

    .line 166
    invoke-virtual {v6, v3, v4, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeStringWithDoubleQuote(Ljava/lang/String;CZ)V

    goto/16 :goto_45c

    :cond_569
    move-object/from16 v4, v33

    .line 167
    iget-boolean v4, v4, Lcom/alibaba/fastjson/util/FieldInfo;->isEnum:Z

    if-eqz v4, :cond_5a8

    if-eqz v3, :cond_5a3

    .line 168
    iget v4, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteEnumUsingToString:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v5, v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v4, v5

    if-eqz v4, :cond_598

    .line 169
    check-cast v3, Ljava/lang/Enum;

    .line 170
    invoke-virtual {v3}, Ljava/lang/Enum;->toString()Ljava/lang/String;

    move-result-object v3

    .line 171
    iget v4, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->UseSingleQuotes:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v5, v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v4, v5

    if-eqz v4, :cond_58b

    const/4 v4, 0x1

    goto :goto_58c

    :cond_58b
    const/4 v4, 0x0

    :goto_58c
    if-eqz v4, :cond_593

    .line 172
    invoke-virtual {v6, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeStringWithSingleQuote(Ljava/lang/String;)V

    goto/16 :goto_45c

    :cond_593
    const/4 v4, 0x0

    .line 173
    invoke-virtual {v6, v3, v4, v4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeStringWithDoubleQuote(Ljava/lang/String;CZ)V

    goto :goto_5b1

    :cond_598
    const/4 v4, 0x0

    .line 174
    check-cast v3, Ljava/lang/Enum;

    .line 175
    invoke-virtual {v3}, Ljava/lang/Enum;->ordinal()I

    move-result v3

    invoke-virtual {v6, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeInt(I)V

    goto :goto_5b1

    :cond_5a3
    const/4 v4, 0x0

    .line 176
    invoke-virtual {v6}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V

    goto :goto_5b1

    :cond_5a8
    const/4 v4, 0x0

    .line 177
    invoke-virtual {v13, v2, v3}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->writeValue(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;)V

    goto :goto_5b1

    :cond_5ad
    const/4 v4, 0x0

    .line 178
    invoke-virtual {v13, v2, v3}, Lcom/alibaba/fastjson/serializer/FieldSerializer;->writeValue(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;)V
    :try_end_5b1
    .catch Ljava/lang/Exception; {:try_start_30e .. :try_end_5b1} :catch_5cf
    .catchall {:try_start_30e .. :try_end_5b1} :catchall_5c9

    :goto_5b1
    const/16 v16, 0x1

    :goto_5b3
    add-int/lit8 v8, v20, 0x1

    move-object/from16 v3, p2

    move-object/from16 v7, v19

    move/from16 v14, v21

    move/from16 v12, v22

    move/from16 v10, v23

    move-object/from16 v4, v29

    move-object/from16 v11, v30

    move-object/from16 v15, v31

    move-object/from16 v5, v32

    goto/16 :goto_173

    :catchall_5c9
    move-exception v0

    move-object v4, v0

    move-object/from16 v3, v17

    goto/16 :goto_667

    :catch_5cf
    move-exception v0

    move-object v4, v0

    move-object/from16 v3, v17

    goto/16 :goto_644

    :cond_5d5
    move-object/from16 v19, v7

    const/4 v4, 0x0

    const/16 v27, 0x2c

    .line 179
    :try_start_5da
    iget-object v3, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->afterFilters:Ljava/util/List;
    :try_end_5dc
    .catch Ljava/lang/Exception; {:try_start_5da .. :try_end_5dc} :catch_639
    .catchall {:try_start_5da .. :try_end_5dc} :catchall_635

    if-eqz v3, :cond_5fe

    if-eqz v16, :cond_5e1

    goto :goto_5e3

    :cond_5e1
    const/16 v27, 0x0

    .line 180
    :goto_5e3
    :try_start_5e3
    iget-object v3, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->afterFilters:Ljava/util/List;

    invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    move/from16 v4, v27

    :goto_5eb
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v5

    if-eqz v5, :cond_5fe

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Lcom/alibaba/fastjson/serializer/AfterFilter;

    move-object/from16 v7, p2

    .line 181
    invoke-virtual {v5, v2, v7, v4}, Lcom/alibaba/fastjson/serializer/AfterFilter;->writeAfter(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;C)C

    move-result v4
    :try_end_5fd
    .catch Ljava/lang/Exception; {:try_start_5e3 .. :try_end_5fd} :catch_5cf
    .catchall {:try_start_5e3 .. :try_end_5fd} :catchall_5c9

    goto :goto_5eb

    :cond_5fe
    move-object/from16 v7, v19

    .line 182
    :try_start_600
    array-length v3, v7
    :try_end_601
    .catch Ljava/lang/Exception; {:try_start_600 .. :try_end_601} :catch_639
    .catchall {:try_start_600 .. :try_end_601} :catchall_635

    if-lez v3, :cond_612

    :try_start_603
    iget v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I

    sget-object v4, Lcom/alibaba/fastjson/serializer/SerializerFeature;->PrettyFormat:Lcom/alibaba/fastjson/serializer/SerializerFeature;

    iget v4, v4, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I

    and-int/2addr v3, v4

    if-eqz v3, :cond_612

    .line 183
    invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->decrementIdent()V

    .line 184
    invoke-virtual/range {p1 .. p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->println()V
    :try_end_612
    .catch Ljava/lang/Exception; {:try_start_603 .. :try_end_612} :catch_5cf
    .catchall {:try_start_603 .. :try_end_612} :catchall_5c9

    .line 185
    :cond_612
    :try_start_612
    iget v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    const/4 v7, 0x1

    add-int/lit8 v12, v3, 0x1

    .line 186
    iget-object v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    array-length v3, v3
    :try_end_61a
    .catch Ljava/lang/Exception; {:try_start_612 .. :try_end_61a} :catch_639
    .catchall {:try_start_612 .. :try_end_61a} :catchall_635

    if-le v12, v3, :cond_628

    .line 187
    :try_start_61c
    iget-object v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;

    if-nez v3, :cond_624

    .line 188
    invoke-virtual {v6, v12}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V

    goto :goto_628

    .line 189
    :cond_624
    invoke-virtual {v6}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->flush()V
    :try_end_627
    .catch Ljava/lang/Exception; {:try_start_61c .. :try_end_627} :catch_5cf
    .catchall {:try_start_61c .. :try_end_627} :catchall_5c9

    const/4 v12, 0x1

    .line 190
    :cond_628
    :goto_628
    :try_start_628
    iget-object v3, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C

    iget v4, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I

    aput-char v18, v3, v4

    .line 191
    iput v12, v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
    :try_end_630
    .catch Ljava/lang/Exception; {:try_start_628 .. :try_end_630} :catch_639
    .catchall {:try_start_628 .. :try_end_630} :catchall_635

    move-object/from16 v3, v17

    .line 192
    iput-object v3, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;

    return-void

    :catchall_635
    move-exception v0

    move-object/from16 v3, v17

    goto :goto_63f

    :catch_639
    move-exception v0

    move-object/from16 v3, v17

    goto :goto_643

    :catchall_63d
    move-exception v0

    move-object v3, v8

    :goto_63f
    move-object v4, v0

    goto :goto_667

    :catch_641
    move-exception v0

    move-object v3, v8

    :goto_643
    move-object v4, v0

    :goto_644
    :try_start_644
    const-string/jumbo v5, "write javaBean error, fastjson version 1.1.72"

    move-object/from16 v6, p3

    if-eqz v6, :cond_65f

    .line 193
    new-instance v7, Ljava/lang/StringBuilder;

    invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v7, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v5, ", fieldName : "

    invoke-virtual {v7, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v7, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    .line 194
    :cond_65f
    new-instance v6, Lcom/alibaba/fastjson/JSONException;

    invoke-direct {v6, v5, v4}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V

    throw v6
    :try_end_665
    .catchall {:try_start_644 .. :try_end_665} :catchall_665

    :catchall_665
    move-exception v0

    goto :goto_63f

    .line 195
    :goto_667
    iput-object v3, v2, Lcom/alibaba/fastjson/serializer/JSONSerializer;->context:Lcom/alibaba/fastjson/serializer/SerialContext;

    .line 196
    goto :goto_66b

    :goto_66a
    throw v4

    :goto_66b
    goto :goto_66a
.end method