public class org.apache.avro.SchemaCompatibility
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.avro.SchemaCompatibility
  super_class: java.lang.Object
{
  private static final org.slf4j.Logger LOG;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final java.lang.String READER_WRITER_COMPATIBLE_MESSAGE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "Reader schema can always successfully decode data written using the writer schema."

  private static volatile int[] $SWITCH_TABLE$org$apache$avro$SchemaCompatibility$SchemaCompatibilityType;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 42
            ldc Lorg/apache/avro/SchemaCompatibility;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.apache.avro.SchemaCompatibility.$assertionsDisabled:Z
         3: .line 43
            ldc Lorg/apache/avro/SchemaCompatibility;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.avro.SchemaCompatibility.LOG:Lorg/slf4j/Logger;
         4: .line 50
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.avro.SchemaCompatibility this
         0: .line 46
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 47
            return
        end local 0 // org.apache.avro.SchemaCompatibility this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/avro/SchemaCompatibility;

  public static org.apache.avro.SchemaCompatibility$SchemaPairCompatibility checkReaderWriterCompatibility(org.apache.avro.Schema, org.apache.avro.Schema);
    descriptor: (Lorg/apache/avro/Schema;Lorg/apache/avro/Schema;)Lorg/apache/avro/SchemaCompatibility$SchemaPairCompatibility;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // org.apache.avro.Schema reader
        start local 1 // org.apache.avro.Schema writer
         0: .line 61
            new org.apache.avro.SchemaCompatibility$ReaderWriterCompatibilityChecker
            dup
            invokespecial org.apache.avro.SchemaCompatibility$ReaderWriterCompatibilityChecker.<init>:()V
            aload 0 /* reader */
         1: .line 62
            aload 1 /* writer */
         2: .line 61
            invokevirtual org.apache.avro.SchemaCompatibility$ReaderWriterCompatibilityChecker.getCompatibility:(Lorg/apache/avro/Schema;Lorg/apache/avro/Schema;)Lorg/apache/avro/SchemaCompatibility$SchemaCompatibilityResult;
            astore 2 /* compatibility */
        start local 2 // org.apache.avro.SchemaCompatibility$SchemaCompatibilityResult compatibility
         3: .line 65
            invokestatic org.apache.avro.SchemaCompatibility.$SWITCH_TABLE$org$apache$avro$SchemaCompatibility$SchemaCompatibilityType:()[I
            aload 2 /* compatibility */
            invokevirtual org.apache.avro.SchemaCompatibility$SchemaCompatibilityResult.getCompatibility:()Lorg/apache/avro/SchemaCompatibility$SchemaCompatibilityType;
            invokevirtual org.apache.avro.SchemaCompatibility$SchemaCompatibilityType.ordinal:()I
            iaload
            tableswitch { // 1 - 2
                    1: 8
                    2: 4
              default: 10
          }
         4: .line 68
      StackMap locals: org.apache.avro.SchemaCompatibility$SchemaCompatibilityResult
      StackMap stack:
            ldc "Data encoded using writer schema:%n%s%nwill or may fail to decode using reader schema:%n%s%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         5: .line 69
            aload 1 /* writer */
            iconst_1
            invokevirtual org.apache.avro.Schema.toString:(Z)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* reader */
            iconst_1
            invokevirtual org.apache.avro.Schema.toString:(Z)Ljava/lang/String;
            aastore
         6: .line 67
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 3 /* message */
        start local 3 // java.lang.String message
         7: .line 70
            goto 11
        end local 3 // java.lang.String message
         8: .line 73
      StackMap locals:
      StackMap stack:
            ldc "Reader schema can always successfully decode data written using the writer schema."
            astore 3 /* message */
        start local 3 // java.lang.String message
         9: .line 74
            goto 11
        end local 3 // java.lang.String message
        10: .line 77
      StackMap locals:
      StackMap stack:
            new org.apache.avro.AvroRuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown compatibility: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* compatibility */
            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
        start local 3 // java.lang.String message
        11: .line 80
      StackMap locals: java.lang.String
      StackMap stack:
            new org.apache.avro.SchemaCompatibility$SchemaPairCompatibility
            dup
            aload 2 /* compatibility */
            aload 0 /* reader */
            aload 1 /* writer */
            aload 3 /* message */
            invokespecial org.apache.avro.SchemaCompatibility$SchemaPairCompatibility.<init>:(Lorg/apache/avro/SchemaCompatibility$SchemaCompatibilityResult;Lorg/apache/avro/Schema;Lorg/apache/avro/Schema;Ljava/lang/String;)V
            areturn
        end local 3 // java.lang.String message
        end local 2 // org.apache.avro.SchemaCompatibility$SchemaCompatibilityResult compatibility
        end local 1 // org.apache.avro.Schema writer
        end local 0 // org.apache.avro.Schema reader
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   12     0         reader  Lorg/apache/avro/Schema;
            0   12     1         writer  Lorg/apache/avro/Schema;
            3   12     2  compatibility  Lorg/apache/avro/SchemaCompatibility$SchemaCompatibilityResult;
            7    8     3        message  Ljava/lang/String;
            9   10     3        message  Ljava/lang/String;
           11   12     3        message  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      reader  final
      writer  final

  public static boolean schemaNameEquals(org.apache.avro.Schema, org.apache.avro.Schema);
    descriptor: (Lorg/apache/avro/Schema;Lorg/apache/avro/Schema;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.avro.Schema reader
        start local 1 // org.apache.avro.Schema writer
         0: .line 97
            aload 0 /* reader */
            invokevirtual org.apache.avro.Schema.getName:()Ljava/lang/String;
            aload 1 /* writer */
            invokevirtual org.apache.avro.Schema.getName:()Ljava/lang/String;
            invokestatic org.apache.avro.SchemaCompatibility.objectsEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 2
         1: .line 98
            iconst_1
            ireturn
         2: .line 101
      StackMap locals:
      StackMap stack:
            aload 0 /* reader */
            invokevirtual org.apache.avro.Schema.getAliases:()Ljava/util/Set;
            aload 1 /* writer */
            invokevirtual org.apache.avro.Schema.getFullName:()Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // org.apache.avro.Schema writer
        end local 0 // org.apache.avro.Schema reader
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  reader  Lorg/apache/avro/Schema;
            0    3     1  writer  Lorg/apache/avro/Schema;
    MethodParameters:
        Name  Flags
      reader  final
      writer  final

  public static org.apache.avro.Schema$Field lookupWriterField(org.apache.avro.Schema, org.apache.avro.Schema$Field);
    descriptor: (Lorg/apache/avro/Schema;Lorg/apache/avro/Schema$Field;)Lorg/apache/avro/Schema$Field;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=7, args_size=2
        start local 0 // org.apache.avro.Schema writerSchema
        start local 1 // org.apache.avro.Schema$Field readerField
         0: .line 117
            getstatic org.apache.avro.SchemaCompatibility.$assertionsDisabled:Z
            ifne 1
            aload 0 /* writerSchema */
            invokevirtual org.apache.avro.Schema.getType:()Lorg/apache/avro/Schema$Type;
            getstatic org.apache.avro.Schema$Type.RECORD:Lorg/apache/avro/Schema$Type;
            if_acmpeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 118
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* writerFields */
        start local 2 // java.util.List writerFields
         2: .line 119
            aload 0 /* writerSchema */
            aload 1 /* readerField */
            invokevirtual org.apache.avro.Schema$Field.name:()Ljava/lang/String;
            invokevirtual org.apache.avro.Schema.getField:(Ljava/lang/String;)Lorg/apache/avro/Schema$Field;
            astore 3 /* direct */
        start local 3 // org.apache.avro.Schema$Field direct
         3: .line 120
            aload 3 /* direct */
            ifnull 5
         4: .line 121
            aload 2 /* writerFields */
            aload 3 /* direct */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 123
      StackMap locals: java.util.List org.apache.avro.Schema$Field
      StackMap stack:
            aload 1 /* readerField */
            invokevirtual org.apache.avro.Schema$Field.aliases:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 5
            goto 10
      StackMap locals: org.apache.avro.Schema org.apache.avro.Schema$Field java.util.List org.apache.avro.Schema$Field top java.util.Iterator
      StackMap stack:
         6: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* readerFieldAliasName */
        start local 4 // java.lang.String readerFieldAliasName
         7: .line 124
            aload 0 /* writerSchema */
            aload 4 /* readerFieldAliasName */
            invokevirtual org.apache.avro.Schema.getField:(Ljava/lang/String;)Lorg/apache/avro/Schema$Field;
            astore 6 /* writerField */
        start local 6 // org.apache.avro.Schema$Field writerField
         8: .line 125
            aload 6 /* writerField */
            ifnull 10
         9: .line 126
            aload 2 /* writerFields */
            aload 6 /* writerField */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // org.apache.avro.Schema$Field writerField
        end local 4 // java.lang.String readerFieldAliasName
        10: .line 123
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        11: .line 129
            aload 2 /* writerFields */
            invokeinterface java.util.List.size:()I
            tableswitch { // 0 - 1
                    0: 12
                    1: 13
              default: 14
          }
        12: .line 131
      StackMap locals: org.apache.avro.Schema org.apache.avro.Schema$Field java.util.List org.apache.avro.Schema$Field
      StackMap stack:
            aconst_null
            areturn
        13: .line 133
      StackMap locals:
      StackMap stack:
            aload 2 /* writerFields */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.avro.Schema$Field
            areturn
        14: .line 135
      StackMap locals:
      StackMap stack:
            new org.apache.avro.AvroRuntimeException
            dup
        15: .line 136
            ldc "Reader record field %s matches multiple fields in writer record schema %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* readerField */
            aastore
            dup
            iconst_1
            aload 0 /* writerSchema */
            aastore
        16: .line 135
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.avro.AvroRuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // org.apache.avro.Schema$Field direct
        end local 2 // java.util.List writerFields
        end local 1 // org.apache.avro.Schema$Field readerField
        end local 0 // org.apache.avro.Schema writerSchema
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   17     0          writerSchema  Lorg/apache/avro/Schema;
            0   17     1           readerField  Lorg/apache/avro/Schema$Field;
            2   17     2          writerFields  Ljava/util/List<Lorg/apache/avro/Schema$Field;>;
            3   17     3                direct  Lorg/apache/avro/Schema$Field;
            7   10     4  readerFieldAliasName  Ljava/lang/String;
            8   10     6           writerField  Lorg/apache/avro/Schema$Field;
    MethodParameters:
              Name  Flags
      writerSchema  final
      readerField   final

  private static boolean objectsEqual(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Object obj1
        start local 1 // java.lang.Object obj2
         0: .line 889
            aload 0 /* obj1 */
            aload 1 /* obj2 */
            invokestatic java.util.Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.Object obj2
        end local 0 // java.lang.Object obj1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  obj1  Ljava/lang/Object;
            0    1     1  obj2  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      obj1  
      obj2  

  private static java.util.List<java.lang.String> asList(java.util.Deque<java.lang.String>);
    descriptor: (Ljava/util/Deque;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.util.Deque deque
         0: .line 893
            new java.util.ArrayList
            dup
            aload 0 /* deque */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 1 /* list */
        start local 1 // java.util.List list
         1: .line 894
            aload 1 /* list */
            invokestatic java.util.Collections.reverse:(Ljava/util/List;)V
         2: .line 895
            aload 1 /* list */
            invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
            areturn
        end local 1 // java.util.List list
        end local 0 // java.util.Deque deque
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  deque  Ljava/util/Deque<Ljava/lang/String;>;
            1    3     1   list  Ljava/util/List<Ljava/lang/String;>;
    Signature: (Ljava/util/Deque<Ljava/lang/String;>;)Ljava/util/List<Ljava/lang/String;>;
    MethodParameters:
       Name  Flags
      deque  

  static int[] $SWITCH_TABLE$org$apache$avro$SchemaCompatibility$SchemaCompatibilityType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 42
            getstatic org.apache.avro.SchemaCompatibility.$SWITCH_TABLE$org$apache$avro$SchemaCompatibility$SchemaCompatibilityType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.apache.avro.SchemaCompatibility$SchemaCompatibilityType.values:()[Lorg/apache/avro/SchemaCompatibility$SchemaCompatibilityType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.apache.avro.SchemaCompatibility$SchemaCompatibilityType.COMPATIBLE:Lorg/apache/avro/SchemaCompatibility$SchemaCompatibilityType;
            invokevirtual org.apache.avro.SchemaCompatibility$SchemaCompatibilityType.ordinal:()I
            iconst_1
            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.SchemaCompatibility$SchemaCompatibilityType.INCOMPATIBLE:Lorg/apache/avro/SchemaCompatibility$SchemaCompatibilityType;
            invokevirtual org.apache.avro.SchemaCompatibility$SchemaCompatibilityType.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.apache.avro.SchemaCompatibility$SchemaCompatibilityType.RECURSION_IN_PROGRESS:Lorg/apache/avro/SchemaCompatibility$SchemaCompatibilityType;
            invokevirtual org.apache.avro.SchemaCompatibility$SchemaCompatibilityType.ordinal:()I
            iconst_3
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            dup
            putstatic org.apache.avro.SchemaCompatibility.$SWITCH_TABLE$org$apache$avro$SchemaCompatibility$SchemaCompatibilityType:[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
}
SourceFile: "SchemaCompatibility.java"
NestMembers:
  org.apache.avro.SchemaCompatibility$Incompatibility  org.apache.avro.SchemaCompatibility$ReaderWriter  org.apache.avro.SchemaCompatibility$ReaderWriterCompatibilityChecker  org.apache.avro.SchemaCompatibility$SchemaCompatibilityResult  org.apache.avro.SchemaCompatibility$SchemaCompatibilityType  org.apache.avro.SchemaCompatibility$SchemaIncompatibilityType  org.apache.avro.SchemaCompatibility$SchemaPairCompatibility
InnerClasses:
  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
  public final Incompatibility = org.apache.avro.SchemaCompatibility$Incompatibility of org.apache.avro.SchemaCompatibility
  private final ReaderWriter = org.apache.avro.SchemaCompatibility$ReaderWriter of org.apache.avro.SchemaCompatibility
  private final ReaderWriterCompatibilityChecker = org.apache.avro.SchemaCompatibility$ReaderWriterCompatibilityChecker of org.apache.avro.SchemaCompatibility
  public final SchemaCompatibilityResult = org.apache.avro.SchemaCompatibility$SchemaCompatibilityResult of org.apache.avro.SchemaCompatibility
  public final SchemaCompatibilityType = org.apache.avro.SchemaCompatibility$SchemaCompatibilityType of org.apache.avro.SchemaCompatibility
  public final SchemaIncompatibilityType = org.apache.avro.SchemaCompatibility$SchemaIncompatibilityType of org.apache.avro.SchemaCompatibility
  public final SchemaPairCompatibility = org.apache.avro.SchemaCompatibility$SchemaPairCompatibility of org.apache.avro.SchemaCompatibility