public class org.apache.avro.reflect.ReflectDatumWriter<T> extends org.apache.avro.specific.SpecificDatumWriter<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.avro.reflect.ReflectDatumWriter
  super_class: org.apache.avro.specific.SpecificDatumWriter
{
  private static volatile int[] $SWITCH_TABLE$org$apache$avro$Schema$Type;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
         0: .line 39
            aload 0 /* this */
            invokestatic org.apache.avro.reflect.ReflectData.get:()Lorg/apache/avro/reflect/ReflectData;
            invokespecial org.apache.avro.reflect.ReflectDatumWriter.<init>:(Lorg/apache/avro/reflect/ReflectData;)V
         1: .line 40
            return
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;

  public void <init>(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
        start local 1 // java.lang.Class c
         0: .line 43
            aload 0 /* this */
            aload 1 /* c */
            invokestatic org.apache.avro.reflect.ReflectData.get:()Lorg/apache/avro/reflect/ReflectData;
            invokespecial org.apache.avro.reflect.ReflectDatumWriter.<init>:(Ljava/lang/Class;Lorg/apache/avro/reflect/ReflectData;)V
         1: .line 44
            return
        end local 1 // java.lang.Class c
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;
            0    2     1     c  Ljava/lang/Class<TT;>;
    Signature: (Ljava/lang/Class<TT;>;)V
    MethodParameters:
      Name  Flags
      c     

  public void <init>(java.lang.Class<T>, org.apache.avro.reflect.ReflectData);
    descriptor: (Ljava/lang/Class;Lorg/apache/avro/reflect/ReflectData;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
        start local 1 // java.lang.Class c
        start local 2 // org.apache.avro.reflect.ReflectData data
         0: .line 47
            aload 0 /* this */
            aload 2 /* data */
            aload 1 /* c */
            invokevirtual org.apache.avro.reflect.ReflectData.getSchema:(Ljava/lang/reflect/Type;)Lorg/apache/avro/Schema;
            aload 2 /* data */
            invokespecial org.apache.avro.reflect.ReflectDatumWriter.<init>:(Lorg/apache/avro/Schema;Lorg/apache/avro/reflect/ReflectData;)V
         1: .line 48
            return
        end local 2 // org.apache.avro.reflect.ReflectData data
        end local 1 // java.lang.Class c
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;
            0    2     1     c  Ljava/lang/Class<TT;>;
            0    2     2  data  Lorg/apache/avro/reflect/ReflectData;
    Signature: (Ljava/lang/Class<TT;>;Lorg/apache/avro/reflect/ReflectData;)V
    MethodParameters:
      Name  Flags
      c     
      data  

  public void <init>(org.apache.avro.Schema);
    descriptor: (Lorg/apache/avro/Schema;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
        start local 1 // org.apache.avro.Schema root
         0: .line 51
            aload 0 /* this */
            aload 1 /* root */
            invokestatic org.apache.avro.reflect.ReflectData.get:()Lorg/apache/avro/reflect/ReflectData;
            invokespecial org.apache.avro.reflect.ReflectDatumWriter.<init>:(Lorg/apache/avro/Schema;Lorg/apache/avro/reflect/ReflectData;)V
         1: .line 52
            return
        end local 1 // org.apache.avro.Schema root
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;
            0    2     1  root  Lorg/apache/avro/Schema;
    MethodParameters:
      Name  Flags
      root  

  public void <init>(org.apache.avro.Schema, org.apache.avro.reflect.ReflectData);
    descriptor: (Lorg/apache/avro/Schema;Lorg/apache/avro/reflect/ReflectData;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
        start local 1 // org.apache.avro.Schema root
        start local 2 // org.apache.avro.reflect.ReflectData reflectData
         0: .line 55
            aload 0 /* this */
            aload 1 /* root */
            aload 2 /* reflectData */
            invokespecial org.apache.avro.specific.SpecificDatumWriter.<init>:(Lorg/apache/avro/Schema;Lorg/apache/avro/specific/SpecificData;)V
         1: .line 56
            return
        end local 2 // org.apache.avro.reflect.ReflectData reflectData
        end local 1 // org.apache.avro.Schema root
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;
            0    2     1         root  Lorg/apache/avro/Schema;
            0    2     2  reflectData  Lorg/apache/avro/reflect/ReflectData;
    MethodParameters:
             Name  Flags
      root         
      reflectData  

  protected void <init>(org.apache.avro.reflect.ReflectData);
    descriptor: (Lorg/apache/avro/reflect/ReflectData;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
        start local 1 // org.apache.avro.reflect.ReflectData reflectData
         0: .line 59
            aload 0 /* this */
            aload 1 /* reflectData */
            invokespecial org.apache.avro.specific.SpecificDatumWriter.<init>:(Lorg/apache/avro/specific/SpecificData;)V
         1: .line 60
            return
        end local 1 // org.apache.avro.reflect.ReflectData reflectData
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;
            0    2     1  reflectData  Lorg/apache/avro/reflect/ReflectData;
    MethodParameters:
             Name  Flags
      reflectData  

  protected void writeArray(org.apache.avro.Schema, java.lang.Object, org.apache.avro.io.Encoder);
    descriptor: (Lorg/apache/avro/Schema;Ljava/lang/Object;Lorg/apache/avro/io/Encoder;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
        start local 1 // org.apache.avro.Schema schema
        start local 2 // java.lang.Object datum
        start local 3 // org.apache.avro.io.Encoder out
         0: .line 68
            aload 2 /* datum */
            instanceof java.util.Collection
            ifeq 3
         1: .line 69
            aload 0 /* this */
            aload 1 /* schema */
            aload 2 /* datum */
            aload 3 /* out */
            invokespecial org.apache.avro.specific.SpecificDatumWriter.writeArray:(Lorg/apache/avro/Schema;Ljava/lang/Object;Lorg/apache/avro/io/Encoder;)V
         2: .line 70
            return
         3: .line 72
      StackMap locals:
      StackMap stack:
            aload 2 /* datum */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            astore 4 /* elementClass */
        start local 4 // java.lang.Class elementClass
         4: .line 73
            aload 4 /* elementClass */
            ifnonnull 6
         5: .line 75
            new org.apache.avro.AvroRuntimeException
            dup
            ldc "Array data must be a Collection or Array"
            invokespecial org.apache.avro.AvroRuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 77
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 1 /* schema */
            invokevirtual org.apache.avro.Schema.getElementType:()Lorg/apache/avro/Schema;
            astore 5 /* element */
        start local 5 // org.apache.avro.Schema element
         7: .line 78
            aload 4 /* elementClass */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 34
         8: .line 79
            aload 5 /* element */
            invokevirtual org.apache.avro.Schema.getType:()Lorg/apache/avro/Schema$Type;
            astore 6 /* type */
        start local 6 // org.apache.avro.Schema$Type type
         9: .line 80
            aload 3 /* out */
            invokevirtual org.apache.avro.io.Encoder.writeArrayStart:()V
        10: .line 81
            invokestatic org.apache.avro.reflect.ReflectDatumWriter.$SWITCH_TABLE$org$apache$avro$Schema$Type:()[I
            aload 6 /* type */
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            iaload
            tableswitch { // 9 - 13
                    9: 18
                   10: 29
                   11: 16
                   12: 14
                   13: 11
              default: 31
          }
        11: .line 83
      StackMap locals: org.apache.avro.Schema org.apache.avro.Schema$Type
      StackMap stack:
            aload 4 /* elementClass */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 32
        12: .line 84
            aload 2 /* datum */
            checkcast boolean[]
            aload 3 /* out */
            invokestatic org.apache.avro.reflect.ArrayAccessor.writeArray:([ZLorg/apache/avro/io/Encoder;)V
        13: .line 85
            goto 32
        14: .line 87
      StackMap locals:
      StackMap stack:
            aload 2 /* datum */
            checkcast double[]
            aload 3 /* out */
            invokestatic org.apache.avro.reflect.ArrayAccessor.writeArray:([DLorg/apache/avro/io/Encoder;)V
        15: .line 88
            goto 32
        16: .line 90
      StackMap locals:
      StackMap stack:
            aload 2 /* datum */
            checkcast float[]
            aload 3 /* out */
            invokestatic org.apache.avro.reflect.ArrayAccessor.writeArray:([FLorg/apache/avro/io/Encoder;)V
        17: .line 91
            goto 32
        18: .line 93
      StackMap locals:
      StackMap stack:
            aload 4 /* elementClass */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 21
        19: .line 94
            aload 2 /* datum */
            checkcast int[]
            aload 3 /* out */
            invokestatic org.apache.avro.reflect.ArrayAccessor.writeArray:([ILorg/apache/avro/io/Encoder;)V
        20: .line 95
            goto 32
      StackMap locals:
      StackMap stack:
        21: aload 4 /* elementClass */
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 24
        22: .line 96
            aload 2 /* datum */
            checkcast char[]
            aload 3 /* out */
            invokestatic org.apache.avro.reflect.ArrayAccessor.writeArray:([CLorg/apache/avro/io/Encoder;)V
        23: .line 97
            goto 32
      StackMap locals:
      StackMap stack:
        24: aload 4 /* elementClass */
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 27
        25: .line 98
            aload 2 /* datum */
            checkcast short[]
            aload 3 /* out */
            invokestatic org.apache.avro.reflect.ArrayAccessor.writeArray:([SLorg/apache/avro/io/Encoder;)V
        26: .line 99
            goto 32
        27: .line 100
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* elementClass */
            aload 6 /* type */
            invokevirtual org.apache.avro.reflect.ReflectDatumWriter.arrayError:(Ljava/lang/Class;Lorg/apache/avro/Schema$Type;)V
        28: .line 102
            goto 32
        29: .line 104
      StackMap locals:
      StackMap stack:
            aload 2 /* datum */
            checkcast long[]
            aload 3 /* out */
            invokestatic org.apache.avro.reflect.ArrayAccessor.writeArray:([JLorg/apache/avro/io/Encoder;)V
        30: .line 105
            goto 32
        31: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* elementClass */
            aload 6 /* type */
            invokevirtual org.apache.avro.reflect.ReflectDatumWriter.arrayError:(Ljava/lang/Class;Lorg/apache/avro/Schema$Type;)V
        32: .line 109
      StackMap locals:
      StackMap stack:
            aload 3 /* out */
            invokevirtual org.apache.avro.io.Encoder.writeArrayEnd:()V
        end local 6 // org.apache.avro.Schema$Type type
        33: .line 110
            goto 37
        34: .line 111
      StackMap locals:
      StackMap stack:
            aload 3 /* out */
            invokevirtual org.apache.avro.io.Encoder.writeArrayStart:()V
        35: .line 112
            aload 0 /* this */
            aload 5 /* element */
            aload 2 /* datum */
            checkcast java.lang.Object[]
            aload 3 /* out */
            invokevirtual org.apache.avro.reflect.ReflectDatumWriter.writeObjectArray:(Lorg/apache/avro/Schema;[Ljava/lang/Object;Lorg/apache/avro/io/Encoder;)V
        36: .line 113
            aload 3 /* out */
            invokevirtual org.apache.avro.io.Encoder.writeArrayEnd:()V
        37: .line 115
      StackMap locals:
      StackMap stack:
            return
        end local 5 // org.apache.avro.Schema element
        end local 4 // java.lang.Class elementClass
        end local 3 // org.apache.avro.io.Encoder out
        end local 2 // java.lang.Object datum
        end local 1 // org.apache.avro.Schema schema
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   38     0          this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;
            0   38     1        schema  Lorg/apache/avro/Schema;
            0   38     2         datum  Ljava/lang/Object;
            0   38     3           out  Lorg/apache/avro/io/Encoder;
            4   38     4  elementClass  Ljava/lang/Class<*>;
            7   38     5       element  Lorg/apache/avro/Schema;
            9   33     6          type  Lorg/apache/avro/Schema$Type;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      schema  
      datum   
      out     

  private void writeObjectArray(org.apache.avro.Schema, java.lang.Object[], org.apache.avro.io.Encoder);
    descriptor: (Lorg/apache/avro/Schema;[Ljava/lang/Object;Lorg/apache/avro/io/Encoder;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=9, args_size=4
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
        start local 1 // org.apache.avro.Schema element
        start local 2 // java.lang.Object[] data
        start local 3 // org.apache.avro.io.Encoder out
         0: .line 118
            aload 2 /* data */
            arraylength
            istore 4 /* size */
        start local 4 // int size
         1: .line 119
            aload 3 /* out */
            iload 4 /* size */
            i2l
            invokevirtual org.apache.avro.io.Encoder.setItemCount:(J)V
         2: .line 120
            aload 2 /* data */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 6
      StackMap locals: org.apache.avro.reflect.ReflectDatumWriter org.apache.avro.Schema java.lang.Object[] org.apache.avro.io.Encoder int top int int java.lang.Object[]
      StackMap stack:
         3: aload 8
            iload 6
            aaload
            astore 5 /* datum */
        start local 5 // java.lang.Object datum
         4: .line 121
            aload 0 /* this */
            aload 1 /* element */
            aload 5 /* datum */
            aload 3 /* out */
            invokevirtual org.apache.avro.reflect.ReflectDatumWriter.write:(Lorg/apache/avro/Schema;Ljava/lang/Object;Lorg/apache/avro/io/Encoder;)V
        end local 5 // java.lang.Object datum
         5: .line 120
            iinc 6 1
      StackMap locals:
      StackMap stack:
         6: iload 6
            iload 7
            if_icmplt 3
         7: .line 123
            return
        end local 4 // int size
        end local 3 // org.apache.avro.io.Encoder out
        end local 2 // java.lang.Object[] data
        end local 1 // org.apache.avro.Schema element
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;
            0    8     1  element  Lorg/apache/avro/Schema;
            0    8     2     data  [Ljava/lang/Object;
            0    8     3      out  Lorg/apache/avro/io/Encoder;
            1    8     4     size  I
            4    5     5    datum  Ljava/lang/Object;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      element  
      data     
      out      

  private void arrayError(java.lang.Class<?>, org.apache.avro.Schema$Type);
    descriptor: (Ljava/lang/Class;Lorg/apache/avro/Schema$Type;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
        start local 1 // java.lang.Class cl
        start local 2 // org.apache.avro.Schema$Type type
         0: .line 126
            new org.apache.avro.AvroRuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Error writing array with inner type "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* cl */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " and avro type: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* type */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.apache.avro.AvroRuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // org.apache.avro.Schema$Type type
        end local 1 // java.lang.Class cl
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;
            0    1     1    cl  Ljava/lang/Class<*>;
            0    1     2  type  Lorg/apache/avro/Schema$Type;
    Signature: (Ljava/lang/Class<*>;Lorg/apache/avro/Schema$Type;)V
    MethodParameters:
      Name  Flags
      cl    
      type  

  protected void writeBytes(java.lang.Object, org.apache.avro.io.Encoder);
    descriptor: (Ljava/lang/Object;Lorg/apache/avro/io/Encoder;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
        start local 1 // java.lang.Object datum
        start local 2 // org.apache.avro.io.Encoder out
         0: .line 131
            aload 1 /* datum */
            instanceof byte[]
            ifeq 2
         1: .line 132
            aload 2 /* out */
            aload 1 /* datum */
            checkcast byte[]
            invokevirtual org.apache.avro.io.Encoder.writeBytes:([B)V
            goto 3
         2: .line 134
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* datum */
            aload 2 /* out */
            invokespecial org.apache.avro.specific.SpecificDatumWriter.writeBytes:(Ljava/lang/Object;Lorg/apache/avro/io/Encoder;)V
         3: .line 135
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.apache.avro.io.Encoder out
        end local 1 // java.lang.Object datum
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;
            0    4     1  datum  Ljava/lang/Object;
            0    4     2    out  Lorg/apache/avro/io/Encoder;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      datum  
      out    

  protected void write(org.apache.avro.Schema, java.lang.Object, org.apache.avro.io.Encoder);
    descriptor: (Lorg/apache/avro/Schema;Ljava/lang/Object;Lorg/apache/avro/io/Encoder;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=9, args_size=4
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
        start local 1 // org.apache.avro.Schema schema
        start local 2 // java.lang.Object datum
        start local 3 // org.apache.avro.io.Encoder out
         0: .line 139
            aload 2 /* datum */
            instanceof java.lang.Byte
            ifeq 2
         1: .line 140
            aload 2 /* datum */
            checkcast java.lang.Byte
            invokevirtual java.lang.Byte.intValue:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 2 /* datum */
            goto 15
         2: .line 141
      StackMap locals:
      StackMap stack:
            aload 2 /* datum */
            instanceof java.lang.Short
            ifeq 4
         3: .line 142
            aload 2 /* datum */
            checkcast java.lang.Short
            invokevirtual java.lang.Short.intValue:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 2 /* datum */
            goto 15
         4: .line 143
      StackMap locals:
      StackMap stack:
            aload 2 /* datum */
            instanceof java.lang.Character
            ifeq 6
         5: .line 144
            aload 2 /* datum */
            checkcast java.lang.Character
            invokevirtual java.lang.Character.charValue:()C
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 2 /* datum */
            goto 15
         6: .line 145
      StackMap locals:
      StackMap stack:
            aload 2 /* datum */
            instanceof java.util.Map
            ifeq 15
            aload 1 /* schema */
            invokestatic org.apache.avro.reflect.ReflectData.isNonStringMapSchema:(Lorg/apache/avro/Schema;)Z
            ifeq 15
         7: .line 149
            aload 2 /* datum */
            checkcast java.util.Map
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            astore 4 /* entries */
        start local 4 // java.util.Set entries
         8: .line 150
            new java.util.ArrayList
            dup
            aload 4 /* entries */
            invokeinterface java.util.Set.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 5 /* entryList */
        start local 5 // java.util.List entryList
         9: .line 151
            aload 2 /* datum */
            checkcast java.util.Map
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 13
      StackMap locals: org.apache.avro.reflect.ReflectDatumWriter org.apache.avro.Schema java.lang.Object org.apache.avro.io.Encoder java.util.Set java.util.List top java.util.Iterator
      StackMap stack:
        10: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 6 /* obj */
        start local 6 // java.lang.Object obj
        11: .line 152
            aload 6 /* obj */
            checkcast java.util.Map$Entry
            astore 8 /* e */
        start local 8 // java.util.Map$Entry e
        12: .line 153
            aload 5 /* entryList */
            new org.apache.avro.reflect.MapEntry
            dup
            aload 8 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            aload 8 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            invokespecial org.apache.avro.reflect.MapEntry.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // java.util.Map$Entry e
        end local 6 // java.lang.Object obj
        13: .line 151
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        14: .line 155
            aload 5 /* entryList */
            astore 2 /* datum */
        end local 5 // java.util.List entryList
        end local 4 // java.util.Set entries
        15: .line 158
      StackMap locals: org.apache.avro.reflect.ReflectDatumWriter org.apache.avro.Schema java.lang.Object org.apache.avro.io.Encoder
      StackMap stack:
            aload 0 /* this */
            aload 1 /* schema */
            aload 2 /* datum */
            aload 3 /* out */
            invokespecial org.apache.avro.specific.SpecificDatumWriter.write:(Lorg/apache/avro/Schema;Ljava/lang/Object;Lorg/apache/avro/io/Encoder;)V
        16: .line 159
            goto 23
      StackMap locals:
      StackMap stack: java.lang.NullPointerException
        17: astore 4 /* e */
        start local 4 // java.lang.NullPointerException e
        18: .line 160
            new java.lang.NullPointerException
            dup
            new java.lang.StringBuilder
            dup
            ldc "in "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* schema */
            invokevirtual org.apache.avro.Schema.getFullName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* e */
            invokevirtual java.lang.NullPointerException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            astore 5 /* result */
        start local 5 // java.lang.NullPointerException result
        19: .line 161
            aload 5 /* result */
            aload 4 /* e */
            invokevirtual java.lang.NullPointerException.getCause:()Ljava/lang/Throwable;
            ifnonnull 20
            aload 4 /* e */
            goto 21
      StackMap locals: org.apache.avro.reflect.ReflectDatumWriter org.apache.avro.Schema java.lang.Object org.apache.avro.io.Encoder java.lang.NullPointerException java.lang.NullPointerException
      StackMap stack: java.lang.NullPointerException
        20: aload 4 /* e */
            invokevirtual java.lang.NullPointerException.getCause:()Ljava/lang/Throwable;
      StackMap locals: org.apache.avro.reflect.ReflectDatumWriter org.apache.avro.Schema java.lang.Object org.apache.avro.io.Encoder java.lang.NullPointerException java.lang.NullPointerException
      StackMap stack: java.lang.NullPointerException java.lang.Throwable
        21: invokevirtual java.lang.NullPointerException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        22: .line 162
            aload 5 /* result */
            athrow
        end local 5 // java.lang.NullPointerException result
        end local 4 // java.lang.NullPointerException e
        23: .line 164
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.apache.avro.io.Encoder out
        end local 2 // java.lang.Object datum
        end local 1 // org.apache.avro.Schema schema
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   24     0       this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;
            0   24     1     schema  Lorg/apache/avro/Schema;
            0   24     2      datum  Ljava/lang/Object;
            0   24     3        out  Lorg/apache/avro/io/Encoder;
            8   15     4    entries  Ljava/util/Set;
            9   15     5  entryList  Ljava/util/List<Ljava/util/Map$Entry;>;
           11   13     6        obj  Ljava/lang/Object;
           12   13     8          e  Ljava/util/Map$Entry;
           18   23     4          e  Ljava/lang/NullPointerException;
           19   23     5     result  Ljava/lang/NullPointerException;
      Exception table:
        from    to  target  type
          15    16      17  Class java.lang.NullPointerException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      schema  
      datum   
      out     

  protected void writeField(java.lang.Object, org.apache.avro.Schema$Field, org.apache.avro.io.Encoder, java.lang.Object);
    descriptor: (Ljava/lang/Object;Lorg/apache/avro/Schema$Field;Lorg/apache/avro/io/Encoder;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // org.apache.avro.reflect.ReflectDatumWriter this
        start local 1 // java.lang.Object record
        start local 2 // org.apache.avro.Schema$Field f
        start local 3 // org.apache.avro.io.Encoder out
        start local 4 // java.lang.Object state
         0: .line 168
            aload 4 /* state */
            ifnull 15
         1: .line 169
            aload 4 /* state */
            checkcast org.apache.avro.reflect.FieldAccessor[]
            aload 2 /* f */
            invokevirtual org.apache.avro.Schema$Field.pos:()I
            aaload
            astore 5 /* accessor */
        start local 5 // org.apache.avro.reflect.FieldAccessor accessor
         2: .line 170
            aload 5 /* accessor */
            ifnull 15
         3: .line 171
            aload 5 /* accessor */
            invokevirtual org.apache.avro.reflect.FieldAccessor.supportsIO:()Z
            ifeq 6
            getstatic org.apache.avro.Schema$Type.UNION:Lorg/apache/avro/Schema$Type;
            aload 2 /* f */
            invokevirtual org.apache.avro.Schema$Field.schema:()Lorg/apache/avro/Schema;
            invokevirtual org.apache.avro.Schema.getType:()Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.equals:(Ljava/lang/Object;)Z
            ifeq 4
            aload 5 /* accessor */
            invokevirtual org.apache.avro.reflect.FieldAccessor.isCustomEncoded:()Z
            ifeq 6
         4: .line 172
      StackMap locals: org.apache.avro.reflect.FieldAccessor
      StackMap stack:
            aload 5 /* accessor */
            aload 1 /* record */
            aload 3 /* out */
            invokevirtual org.apache.avro.reflect.FieldAccessor.write:(Ljava/lang/Object;Lorg/apache/avro/io/Encoder;)V
         5: .line 173
            return
         6: .line 175
      StackMap locals:
      StackMap stack:
            aload 5 /* accessor */
            invokevirtual org.apache.avro.reflect.FieldAccessor.isStringable:()Z
            ifeq 15
         7: .line 177
            aload 5 /* accessor */
            aload 1 /* record */
            invokevirtual org.apache.avro.reflect.FieldAccessor.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 6 /* object */
        start local 6 // java.lang.Object object
         8: .line 178
            aload 0 /* this */
            aload 2 /* f */
            invokevirtual org.apache.avro.Schema$Field.schema:()Lorg/apache/avro/Schema;
            aload 6 /* object */
            ifnonnull 9
            aconst_null
            goto 10
      StackMap locals: org.apache.avro.reflect.ReflectDatumWriter java.lang.Object org.apache.avro.Schema$Field org.apache.avro.io.Encoder java.lang.Object org.apache.avro.reflect.FieldAccessor java.lang.Object
      StackMap stack: org.apache.avro.reflect.ReflectDatumWriter org.apache.avro.Schema
         9: aload 6 /* object */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
      StackMap locals: org.apache.avro.reflect.ReflectDatumWriter java.lang.Object org.apache.avro.Schema$Field org.apache.avro.io.Encoder java.lang.Object org.apache.avro.reflect.FieldAccessor java.lang.Object
      StackMap stack: org.apache.avro.reflect.ReflectDatumWriter org.apache.avro.Schema java.lang.String
        10: aload 3 /* out */
            invokevirtual org.apache.avro.reflect.ReflectDatumWriter.write:(Lorg/apache/avro/Schema;Ljava/lang/Object;Lorg/apache/avro/io/Encoder;)V
        end local 6 // java.lang.Object object
        11: .line 179
            goto 14
      StackMap locals: org.apache.avro.reflect.ReflectDatumWriter java.lang.Object org.apache.avro.Schema$Field org.apache.avro.io.Encoder java.lang.Object org.apache.avro.reflect.FieldAccessor
      StackMap stack: java.lang.IllegalAccessException
        12: astore 6 /* e */
        start local 6 // java.lang.IllegalAccessException e
        13: .line 180
            new org.apache.avro.AvroRuntimeException
            dup
            ldc "Failed to write Stringable"
            aload 6 /* e */
            invokespecial org.apache.avro.AvroRuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.lang.IllegalAccessException e
        14: .line 182
      StackMap locals:
      StackMap stack:
            return
        end local 5 // org.apache.avro.reflect.FieldAccessor accessor
        15: .line 186
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* record */
            aload 2 /* f */
            aload 3 /* out */
            aload 4 /* state */
            invokespecial org.apache.avro.specific.SpecificDatumWriter.writeField:(Ljava/lang/Object;Lorg/apache/avro/Schema$Field;Lorg/apache/avro/io/Encoder;Ljava/lang/Object;)V
        16: .line 187
            return
        end local 4 // java.lang.Object state
        end local 3 // org.apache.avro.io.Encoder out
        end local 2 // org.apache.avro.Schema$Field f
        end local 1 // java.lang.Object record
        end local 0 // org.apache.avro.reflect.ReflectDatumWriter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   17     0      this  Lorg/apache/avro/reflect/ReflectDatumWriter<TT;>;
            0   17     1    record  Ljava/lang/Object;
            0   17     2         f  Lorg/apache/avro/Schema$Field;
            0   17     3       out  Lorg/apache/avro/io/Encoder;
            0   17     4     state  Ljava/lang/Object;
            2   15     5  accessor  Lorg/apache/avro/reflect/FieldAccessor;
            8   11     6    object  Ljava/lang/Object;
           13   14     6         e  Ljava/lang/IllegalAccessException;
      Exception table:
        from    to  target  type
           7    11      12  Class java.lang.IllegalAccessException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      record  
      f       
      out     
      state   

  static int[] $SWITCH_TABLE$org$apache$avro$Schema$Type();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 37
            getstatic org.apache.avro.reflect.ReflectDatumWriter.$SWITCH_TABLE$org$apache$avro$Schema$Type:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.apache.avro.Schema$Type.values:()[Lorg/apache/avro/Schema$Type;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.apache.avro.Schema$Type.ARRAY:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            iconst_3
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.apache.avro.Schema$Type.BOOLEAN:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            bipush 13
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.apache.avro.Schema$Type.BYTES:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            bipush 8
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic org.apache.avro.Schema$Type.DOUBLE:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            bipush 12
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic org.apache.avro.Schema$Type.ENUM:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            iconst_2
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic org.apache.avro.Schema$Type.FIXED:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            bipush 6
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic org.apache.avro.Schema$Type.FLOAT:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            bipush 11
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            getstatic org.apache.avro.Schema$Type.INT:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            bipush 9
            iastore
        24: goto 26
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        25: pop
      StackMap locals:
      StackMap stack:
        26: aload 0
            getstatic org.apache.avro.Schema$Type.LONG:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            bipush 10
            iastore
        27: goto 29
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        28: pop
      StackMap locals:
      StackMap stack:
        29: aload 0
            getstatic org.apache.avro.Schema$Type.MAP:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            iconst_4
            iastore
        30: goto 32
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        31: pop
      StackMap locals:
      StackMap stack:
        32: aload 0
            getstatic org.apache.avro.Schema$Type.NULL:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            bipush 14
            iastore
        33: goto 35
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        34: pop
      StackMap locals:
      StackMap stack:
        35: aload 0
            getstatic org.apache.avro.Schema$Type.RECORD:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            iconst_1
            iastore
        36: goto 38
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        37: pop
      StackMap locals:
      StackMap stack:
        38: aload 0
            getstatic org.apache.avro.Schema$Type.STRING:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            bipush 7
            iastore
        39: goto 41
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        40: pop
      StackMap locals:
      StackMap stack:
        41: aload 0
            getstatic org.apache.avro.Schema$Type.UNION:Lorg/apache/avro/Schema$Type;
            invokevirtual org.apache.avro.Schema$Type.ordinal:()I
            iconst_5
            iastore
        42: goto 44
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        43: pop
      StackMap locals:
      StackMap stack:
        44: aload 0
            dup
            putstatic org.apache.avro.reflect.ReflectDatumWriter.$SWITCH_TABLE$org$apache$avro$Schema$Type:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
          23    24      25  Class java.lang.NoSuchFieldError
          26    27      28  Class java.lang.NoSuchFieldError
          29    30      31  Class java.lang.NoSuchFieldError
          32    33      34  Class java.lang.NoSuchFieldError
          35    36      37  Class java.lang.NoSuchFieldError
          38    39      40  Class java.lang.NoSuchFieldError
          41    42      43  Class java.lang.NoSuchFieldError
}
Signature: <T:Ljava/lang/Object;>Lorg/apache/avro/specific/SpecificDatumWriter<TT;>;
SourceFile: "ReflectDatumWriter.java"
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public Field = org.apache.avro.Schema$Field of org.apache.avro.Schema
  public final Type = org.apache.avro.Schema$Type of org.apache.avro.Schema