public abstract class java.lang.Enum<E extends java.lang.Enum<E>> implements java.lang.Comparable<E>, java.io.Serializable
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: java.lang.Enum
  super_class: java.lang.Object
{
  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int ordinal;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public final java.lang.String name();
    descriptor: ()Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Enum this
         0: .line 79
            aload 0 /* this */
            getfield java.lang.Enum.name:Ljava/lang/String;
            areturn
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/Enum<TE;>;

  public final int ordinal();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Enum this
         0: .line 105
            aload 0 /* this */
            getfield java.lang.Enum.ordinal:I
            ireturn
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/Enum<TE;>;

  protected void <init>(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // java.lang.Enum this
        start local 1 // java.lang.String name
        start local 2 // int ordinal
         0: .line 119
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 120
            aload 0 /* this */
            aload 1 /* name */
            putfield java.lang.Enum.name:Ljava/lang/String;
         2: .line 121
            aload 0 /* this */
            iload 2 /* ordinal */
            putfield java.lang.Enum.ordinal:I
         3: .line 122
            return
        end local 2 // int ordinal
        end local 1 // java.lang.String name
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Ljava/lang/Enum<TE;>;
            0    4     1     name  Ljava/lang/String;
            0    4     2  ordinal  I
    MethodParameters:
         Name  Flags
      name     
      ordinal  

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Enum this
         0: .line 133
            aload 0 /* this */
            getfield java.lang.Enum.name:Ljava/lang/String;
            areturn
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/Enum<TE;>;

  public final boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Enum this
        start local 1 // java.lang.Object other
         0: .line 145
            aload 0 /* this */
            aload 1 /* other */
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.Object other
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Ljava/lang/Enum<TE;>;
            0    2     1  other  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      other  

  public final int hashCode();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Enum this
         0: .line 154
            aload 0 /* this */
            invokespecial java.lang.Object.hashCode:()I
            ireturn
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/Enum<TE;>;

  protected final java.lang.Object clone();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Enum this
         0: .line 165
            new java.lang.CloneNotSupportedException
            dup
            invokespecial java.lang.CloneNotSupportedException.<init>:()V
            athrow
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/Enum<TE;>;
    Exceptions:
      throws java.lang.CloneNotSupportedException

  public final int compareTo();
    descriptor: (Ljava/lang/Enum;)I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.lang.Enum this
        start local 1 // java.lang.Enum o
         0: .line 178
            aload 1 /* o */
            astore 2 /* other */
        start local 2 // java.lang.Enum other
         1: .line 179
            aload 0 /* this */
            astore 3 /* self */
        start local 3 // java.lang.Enum self
         2: .line 180
            aload 3 /* self */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 2 /* other */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            if_acmpeq 5
         3: .line 181
            aload 3 /* self */
            invokevirtual java.lang.Enum.getDeclaringClass:()Ljava/lang/Class;
            aload 2 /* other */
            invokevirtual java.lang.Enum.getDeclaringClass:()Ljava/lang/Class;
            if_acmpeq 5
         4: .line 182
            new java.lang.ClassCastException
            dup
            invokespecial java.lang.ClassCastException.<init>:()V
            athrow
         5: .line 183
      StackMap locals: java.lang.Enum java.lang.Enum
      StackMap stack:
            aload 3 /* self */
            getfield java.lang.Enum.ordinal:I
            aload 2 /* other */
            getfield java.lang.Enum.ordinal:I
            isub
            ireturn
        end local 3 // java.lang.Enum self
        end local 2 // java.lang.Enum other
        end local 1 // java.lang.Enum o
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Ljava/lang/Enum<TE;>;
            0    6     1      o  TE;
            1    6     2  other  Ljava/lang/Enum<*>;
            2    6     3   self  Ljava/lang/Enum<TE;>;
    Signature: (TE;)I
    MethodParameters:
      Name  Flags
      o     

  public final java.lang.Class<E> getDeclaringClass();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.lang.Enum this
         0: .line 200
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 1 /* clazz */
        start local 1 // java.lang.Class clazz
         1: .line 201
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 2 /* zuper */
        start local 2 // java.lang.Class zuper
         2: .line 202
            aload 2 /* zuper */
            ldc Ljava/lang/Enum;
            if_acmpne 3
            aload 1 /* clazz */
            goto 4
      StackMap locals: java.lang.Class java.lang.Class
      StackMap stack:
         3: aload 2 /* zuper */
      StackMap locals:
      StackMap stack: java.lang.Class
         4: areturn
        end local 2 // java.lang.Class zuper
        end local 1 // java.lang.Class clazz
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Ljava/lang/Enum<TE;>;
            1    5     1  clazz  Ljava/lang/Class<*>;
            2    5     2  zuper  Ljava/lang/Class<*>;
    Signature: ()Ljava/lang/Class<TE;>;

  public static <T extends java.lang.Enum<T>> T valueOf(java.lang.Class<T>, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // java.lang.Class enumType
        start local 1 // java.lang.String name
         0: .line 234
            aload 0 /* enumType */
            invokevirtual java.lang.Class.enumConstantDirectory:()Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Enum
            astore 2 /* result */
        start local 2 // java.lang.Enum result
         1: .line 235
            aload 2 /* result */
            ifnull 3
         2: .line 236
            aload 2 /* result */
            areturn
         3: .line 237
      StackMap locals: java.lang.Enum
      StackMap stack:
            aload 1 /* name */
            ifnonnull 5
         4: .line 238
            new java.lang.NullPointerException
            dup
            ldc "Name is null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 239
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
         6: .line 240
            new java.lang.StringBuilder
            dup
            ldc "No enum constant "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* enumType */
            invokevirtual java.lang.Class.getCanonicalName:()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 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         7: .line 239
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.Enum result
        end local 1 // java.lang.String name
        end local 0 // java.lang.Class enumType
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0  enumType  Ljava/lang/Class<TT;>;
            0    8     1      name  Ljava/lang/String;
            1    8     2    result  TT;
    Signature: <T:Ljava/lang/Enum<TT;>;>(Ljava/lang/Class<TT;>;Ljava/lang/String;)TT;
    MethodParameters:
          Name  Flags
      enumType  
      name      

  protected final void finalize();
    descriptor: ()V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // java.lang.Enum this
         0: .line 247
            return
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/Enum<TE;>;

  private void readObject(java.io.ObjectInputStream);
    descriptor: (Ljava/io/ObjectInputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.Enum this
        start local 1 // java.io.ObjectInputStream in
         0: .line 254
            new java.io.InvalidObjectException
            dup
            ldc "can't deserialize enum"
            invokespecial java.io.InvalidObjectException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.io.ObjectInputStream in
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/Enum<TE;>;
            0    1     1    in  Ljava/io/ObjectInputStream;
    Exceptions:
      throws java.io.IOException, java.lang.ClassNotFoundException
    MethodParameters:
      Name  Flags
      in    

  private void readObjectNoData();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Enum this
         0: .line 258
            new java.io.InvalidObjectException
            dup
            ldc "can't deserialize enum"
            invokespecial java.io.InvalidObjectException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.Enum this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/Enum<TE;>;
    Exceptions:
      throws java.io.ObjectStreamException

  public int compareTo(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast java.lang.Enum
            invokevirtual java.lang.Enum.compareTo:(Ljava/lang/Enum;)I
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: <E:Ljava/lang/Enum<TE;>;>Ljava/lang/Object;Ljava/lang/Comparable<TE;>;Ljava/io/Serializable;
SourceFile: "Enum.java"