public abstract class java.text.Collator implements java.util.Comparator<java.lang.Object>, java.lang.Cloneable
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: java.text.Collator
  super_class: java.lang.Object
{
  public static final int PRIMARY;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int SECONDARY;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int TERTIARY;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final int IDENTICAL;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  public static final int NO_DECOMPOSITION;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int CANONICAL_DECOMPOSITION;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int FULL_DECOMPOSITION;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private int strength;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int decmp;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private static final java.util.concurrent.ConcurrentMap<java.util.Locale, java.lang.ref.SoftReference<java.text.Collator>> cache;
    descriptor: Ljava/util/concurrent/ConcurrentMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentMap<Ljava/util/Locale;Ljava/lang/ref/SoftReference<Ljava/text/Collator;>;>;

  static final int LESS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  static final int EQUAL;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  static final int GREATER;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 492
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
         1: .line 491
            putstatic java.text.Collator.cache:Ljava/util/concurrent/ConcurrentMap;
         2: .line 514
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static synchronized java.text.Collator getInstance();
    descriptor: ()Ljava/text/Collator;
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=0, args_size=0
         0: .line 224
            invokestatic java.util.Locale.getDefault:()Ljava/util/Locale;
            invokestatic java.text.Collator.getInstance:(Ljava/util/Locale;)Ljava/text/Collator;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.text.Collator getInstance(java.util.Locale);
    descriptor: (Ljava/util/Locale;)Ljava/text/Collator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // java.util.Locale desiredLocale
         0: .line 235
            getstatic java.text.Collator.cache:Ljava/util/concurrent/ConcurrentMap;
            aload 0 /* desiredLocale */
            invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.ref.SoftReference
            astore 1 /* ref */
        start local 1 // java.lang.ref.SoftReference ref
         1: .line 236
            aload 1 /* ref */
            ifnull 2
            aload 1 /* ref */
            invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
            checkcast java.text.Collator
            goto 3
      StackMap locals: java.lang.ref.SoftReference
      StackMap stack:
         2: aconst_null
      StackMap locals:
      StackMap stack: java.text.Collator
         3: astore 2 /* result */
        start local 2 // java.text.Collator result
         4: .line 237
            aload 2 /* result */
            ifnonnull 22
         5: .line 239
            ldc Ljava/text/spi/CollatorProvider;
         6: .line 240
            aload 0 /* desiredLocale */
         7: .line 239
            invokestatic sun.util.locale.provider.LocaleProviderAdapter.getAdapter:(Ljava/lang/Class;Ljava/util/Locale;)Lsun/util/locale/provider/LocaleProviderAdapter;
            astore 3 /* adapter */
        start local 3 // sun.util.locale.provider.LocaleProviderAdapter adapter
         8: .line 241
            aload 3 /* adapter */
            invokevirtual sun.util.locale.provider.LocaleProviderAdapter.getCollatorProvider:()Ljava/text/spi/CollatorProvider;
            astore 4 /* provider */
        start local 4 // java.text.spi.CollatorProvider provider
         9: .line 242
            aload 4 /* provider */
            aload 0 /* desiredLocale */
            invokevirtual java.text.spi.CollatorProvider.getInstance:(Ljava/util/Locale;)Ljava/text/Collator;
            astore 2 /* result */
        10: .line 243
            aload 2 /* result */
            ifnonnull 14
        11: .line 244
            invokestatic sun.util.locale.provider.LocaleProviderAdapter.forJRE:()Lsun/util/locale/provider/LocaleProviderAdapter;
        12: .line 245
            invokevirtual sun.util.locale.provider.LocaleProviderAdapter.getCollatorProvider:()Ljava/text/spi/CollatorProvider;
            aload 0 /* desiredLocale */
            invokevirtual java.text.spi.CollatorProvider.getInstance:(Ljava/util/Locale;)Ljava/text/Collator;
        13: .line 244
            astore 2 /* result */
        14: .line 248
      StackMap locals: java.text.Collator sun.util.locale.provider.LocaleProviderAdapter java.text.spi.CollatorProvider
      StackMap stack:
            aload 1 /* ref */
            ifnull 16
        15: .line 250
            getstatic java.text.Collator.cache:Ljava/util/concurrent/ConcurrentMap;
            aload 0 /* desiredLocale */
            aload 1 /* ref */
            invokeinterface java.util.concurrent.ConcurrentMap.remove:(Ljava/lang/Object;Ljava/lang/Object;)Z
            pop
        16: .line 252
      StackMap locals:
      StackMap stack:
            getstatic java.text.Collator.cache:Ljava/util/concurrent/ConcurrentMap;
            aload 0 /* desiredLocale */
            new java.lang.ref.SoftReference
            dup
            aload 2 /* result */
            invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
            invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.ref.SoftReference
            astore 1 /* ref */
        17: .line 253
            aload 1 /* ref */
            ifnonnull 19
        18: .line 254
            goto 22
        19: .line 256
      StackMap locals:
      StackMap stack:
            aload 1 /* ref */
            invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
            checkcast java.text.Collator
            astore 5 /* cachedColl */
        start local 5 // java.text.Collator cachedColl
        20: .line 257
            aload 5 /* cachedColl */
            ifnull 14
        21: .line 258
            aload 5 /* cachedColl */
            astore 2 /* result */
        end local 5 // java.text.Collator cachedColl
        end local 4 // java.text.spi.CollatorProvider provider
        end local 3 // sun.util.locale.provider.LocaleProviderAdapter adapter
        22: .line 263
      StackMap locals:
      StackMap stack:
            aload 2 /* result */
            invokevirtual java.text.Collator.clone:()Ljava/lang/Object;
            checkcast java.text.Collator
            areturn
        end local 2 // java.text.Collator result
        end local 1 // java.lang.ref.SoftReference ref
        end local 0 // java.util.Locale desiredLocale
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   23     0  desiredLocale  Ljava/util/Locale;
            1   23     1            ref  Ljava/lang/ref/SoftReference<Ljava/text/Collator;>;
            4   23     2         result  Ljava/text/Collator;
            8   22     3        adapter  Lsun/util/locale/provider/LocaleProviderAdapter;
            9   22     4       provider  Ljava/text/spi/CollatorProvider;
           20   22     5     cachedColl  Ljava/text/Collator;
    MethodParameters:
               Name  Flags
      desiredLocale  

  public abstract int compare(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      source  
      target  

  public int compare(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.text.Collator this
        start local 1 // java.lang.Object o1
        start local 2 // java.lang.Object o2
         0: .line 304
            aload 0 /* this */
            aload 1 /* o1 */
            checkcast java.lang.String
            aload 2 /* o2 */
            checkcast java.lang.String
            invokevirtual java.text.Collator.compare:(Ljava/lang/String;Ljava/lang/String;)I
            ireturn
        end local 2 // java.lang.Object o2
        end local 1 // java.lang.Object o1
        end local 0 // java.text.Collator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/text/Collator;
            0    1     1    o1  Ljava/lang/Object;
            0    1     2    o2  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      o1    
      o2    

  public abstract java.text.CollationKey getCollationKey(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/text/CollationKey;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      source  

  public boolean equals(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.text.Collator this
        start local 1 // java.lang.String source
        start local 2 // java.lang.String target
         0: .line 331
            aload 0 /* this */
            aload 1 /* source */
            aload 2 /* target */
            invokevirtual java.text.Collator.compare:(Ljava/lang/String;Ljava/lang/String;)I
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 2 // java.lang.String target
        end local 1 // java.lang.String source
        end local 0 // java.text.Collator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Ljava/text/Collator;
            0    2     1  source  Ljava/lang/String;
            0    2     2  target  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      source  
      target  

  public synchronized int getStrength();
    descriptor: ()I
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.text.Collator this
         0: .line 347
            aload 0 /* this */
            getfield java.text.Collator.strength:I
            ireturn
        end local 0 // java.text.Collator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/text/Collator;

  public synchronized void setStrength(int);
    descriptor: (I)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.text.Collator this
        start local 1 // int newStrength
         0: .line 364
            iload 1 /* newStrength */
            ifeq 5
         1: .line 365
            iload 1 /* newStrength */
            iconst_1
            if_icmpeq 5
         2: .line 366
            iload 1 /* newStrength */
            iconst_2
            if_icmpeq 5
         3: .line 367
            iload 1 /* newStrength */
            iconst_3
            if_icmpeq 5
         4: .line 368
            new java.lang.IllegalArgumentException
            dup
            ldc "Incorrect comparison level."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 370
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* newStrength */
            putfield java.text.Collator.strength:I
         6: .line 371
            return
        end local 1 // int newStrength
        end local 0 // java.text.Collator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Ljava/text/Collator;
            0    7     1  newStrength  I
    MethodParameters:
             Name  Flags
      newStrength  

  public synchronized int getDecomposition();
    descriptor: ()I
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.text.Collator this
         0: .line 394
            aload 0 /* this */
            getfield java.text.Collator.decmp:I
            ireturn
        end local 0 // java.text.Collator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/text/Collator;

  public synchronized void setDecomposition(int);
    descriptor: (I)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.text.Collator this
        start local 1 // int decompositionMode
         0: .line 408
            iload 1 /* decompositionMode */
            ifeq 4
         1: .line 409
            iload 1 /* decompositionMode */
            iconst_1
            if_icmpeq 4
         2: .line 410
            iload 1 /* decompositionMode */
            iconst_2
            if_icmpeq 4
         3: .line 411
            new java.lang.IllegalArgumentException
            dup
            ldc "Wrong decomposition mode."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 413
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* decompositionMode */
            putfield java.text.Collator.decmp:I
         5: .line 414
            return
        end local 1 // int decompositionMode
        end local 0 // java.text.Collator this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    6     0               this  Ljava/text/Collator;
            0    6     1  decompositionMode  I
    MethodParameters:
                   Name  Flags
      decompositionMode  

  public static synchronized java.util.Locale[] getAvailableLocales();
    descriptor: ()[Ljava/util/Locale;
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=0
         0: .line 431
            ldc Ljava/text/spi/CollatorProvider;
            invokestatic sun.util.locale.provider.LocaleServiceProviderPool.getPool:(Ljava/lang/Class;)Lsun/util/locale/provider/LocaleServiceProviderPool;
         1: .line 430
            astore 0 /* pool */
        start local 0 // sun.util.locale.provider.LocaleServiceProviderPool pool
         2: .line 432
            aload 0 /* pool */
            invokevirtual sun.util.locale.provider.LocaleServiceProviderPool.getAvailableLocales:()[Ljava/util/Locale;
            areturn
        end local 0 // sun.util.locale.provider.LocaleServiceProviderPool pool
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            2    3     0  pool  Lsun/util/locale/provider/LocaleServiceProviderPool;

  public java.lang.Object clone();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.text.Collator this
         0: .line 442
            aload 0 /* this */
            invokespecial java.lang.Object.clone:()Ljava/lang/Object;
            checkcast java.text.Collator
         1: areturn
         2: .line 443
      StackMap locals:
      StackMap stack: java.lang.CloneNotSupportedException
            astore 1 /* e */
        start local 1 // java.lang.CloneNotSupportedException e
         3: .line 444
            new java.lang.InternalError
            dup
            aload 1 /* e */
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.CloneNotSupportedException e
        end local 0 // java.text.Collator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/text/Collator;
            3    4     1     e  Ljava/lang/CloneNotSupportedException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.CloneNotSupportedException

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.text.Collator this
        start local 1 // java.lang.Object that
         0: .line 457
            aload 0 /* this */
            aload 1 /* that */
            if_acmpne 2
         1: .line 458
            iconst_1
            ireturn
         2: .line 460
      StackMap locals:
      StackMap stack:
            aload 1 /* that */
            ifnonnull 4
         3: .line 461
            iconst_0
            ireturn
         4: .line 463
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 1 /* that */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            if_acmpeq 6
         5: .line 464
            iconst_0
            ireturn
         6: .line 466
      StackMap locals:
      StackMap stack:
            aload 1 /* that */
            checkcast java.text.Collator
            astore 2 /* other */
        start local 2 // java.text.Collator other
         7: .line 467
            aload 0 /* this */
            getfield java.text.Collator.strength:I
            aload 2 /* other */
            getfield java.text.Collator.strength:I
            if_icmpne 10
         8: .line 468
            aload 0 /* this */
            getfield java.text.Collator.decmp:I
            aload 2 /* other */
            getfield java.text.Collator.decmp:I
            if_icmpne 10
         9: .line 467
            iconst_1
            ireturn
      StackMap locals: java.text.Collator
      StackMap stack:
        10: iconst_0
            ireturn
        end local 2 // java.text.Collator other
        end local 1 // java.lang.Object that
        end local 0 // java.text.Collator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Ljava/text/Collator;
            0   11     1   that  Ljava/lang/Object;
            7   11     2  other  Ljava/text/Collator;
    MethodParameters:
      Name  Flags
      that  

  public abstract int hashCode();
    descriptor: ()I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.text.Collator this
         0: .line 483
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 489
            aload 0 /* this */
            iconst_0
            putfield java.text.Collator.strength:I
         2: .line 490
            aload 0 /* this */
            iconst_0
            putfield java.text.Collator.decmp:I
         3: .line 485
            aload 0 /* this */
            iconst_2
            putfield java.text.Collator.strength:I
         4: .line 486
            aload 0 /* this */
            iconst_1
            putfield java.text.Collator.decmp:I
         5: .line 487
            return
        end local 0 // java.text.Collator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljava/text/Collator;
}
Signature: Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/Object;>;Ljava/lang/Cloneable;
SourceFile: "Collator.java"