public class com.sun.xml.internal.bind.v2.util.EditDistance
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.xml.internal.bind.v2.util.EditDistance
  super_class: java.lang.Object
{
  private static final java.util.WeakHashMap<java.util.AbstractMap$SimpleEntry<java.lang.String, java.lang.String>, java.lang.Integer> CACHE;
    descriptor: Ljava/util/WeakHashMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/WeakHashMap<Ljava/util/AbstractMap$SimpleEntry<Ljava/lang/String;Ljava/lang/String;>;Ljava/lang/Integer;>;

  private int[] cost;
    descriptor: [I
    flags: (0x0002) ACC_PRIVATE

  private int[] back;
    descriptor: [I
    flags: (0x0002) ACC_PRIVATE

  private final java.lang.String a;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String b;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 49
            new java.util.WeakHashMap
            dup
            invokespecial java.util.WeakHashMap.<init>:()V
            putstatic com.sun.xml.internal.bind.v2.util.EditDistance.CACHE:Ljava/util/WeakHashMap;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static int editDistance(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.lang.String a
        start local 1 // java.lang.String b
         0: .line 59
            new java.util.AbstractMap$SimpleEntry
            dup
            aload 0 /* a */
            aload 1 /* b */
            invokespecial java.util.AbstractMap$SimpleEntry.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
            astore 2 /* entry */
        start local 2 // java.util.AbstractMap$SimpleEntry entry
         1: .line 60
            aconst_null
            astore 3 /* result */
        start local 3 // java.lang.Integer result
         2: .line 61
            getstatic com.sun.xml.internal.bind.v2.util.EditDistance.CACHE:Ljava/util/WeakHashMap;
            aload 2 /* entry */
            invokevirtual java.util.WeakHashMap.containsKey:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 62
            getstatic com.sun.xml.internal.bind.v2.util.EditDistance.CACHE:Ljava/util/WeakHashMap;
            aload 2 /* entry */
            invokevirtual java.util.WeakHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 3 /* result */
         4: .line 64
      StackMap locals: java.util.AbstractMap$SimpleEntry java.lang.Integer
      StackMap stack:
            aload 3 /* result */
            ifnonnull 7
         5: .line 65
            new com.sun.xml.internal.bind.v2.util.EditDistance
            dup
            aload 0 /* a */
            aload 1 /* b */
            invokespecial com.sun.xml.internal.bind.v2.util.EditDistance.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            invokevirtual com.sun.xml.internal.bind.v2.util.EditDistance.calc:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 3 /* result */
         6: .line 66
            getstatic com.sun.xml.internal.bind.v2.util.EditDistance.CACHE:Ljava/util/WeakHashMap;
            aload 2 /* entry */
            aload 3 /* result */
            invokevirtual java.util.WeakHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 68
      StackMap locals:
      StackMap stack:
            aload 3 /* result */
            invokevirtual java.lang.Integer.intValue:()I
            ireturn
        end local 3 // java.lang.Integer result
        end local 2 // java.util.AbstractMap$SimpleEntry entry
        end local 1 // java.lang.String b
        end local 0 // java.lang.String a
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0       a  Ljava/lang/String;
            0    8     1       b  Ljava/lang/String;
            1    8     2   entry  Ljava/util/AbstractMap$SimpleEntry<Ljava/lang/String;Ljava/lang/String;>;
            2    8     3  result  Ljava/lang/Integer;
    MethodParameters:
      Name  Flags
      a     
      b     

  public static java.lang.String findNearest(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.String key
        start local 1 // java.lang.String[] group
         0: .line 78
            aload 0 /* key */
            aload 1 /* group */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic com.sun.xml.internal.bind.v2.util.EditDistance.findNearest:(Ljava/lang/String;Ljava/util/Collection;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String[] group
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0    key  Ljava/lang/String;
            0    1     1  group  [Ljava/lang/String;
    MethodParameters:
       Name  Flags
      key    
      group  

  public static java.lang.String findNearest(java.lang.String, java.util.Collection<java.lang.String>);
    descriptor: (Ljava/lang/String;Ljava/util/Collection;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // java.lang.String key
        start local 1 // java.util.Collection group
         0: .line 88
            ldc 2147483647
            istore 2 /* c */
        start local 2 // int c
         1: .line 89
            aconst_null
            astore 3 /* r */
        start local 3 // java.lang.String r
         2: .line 91
            aload 1 /* group */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5
            goto 8
      StackMap locals: java.lang.String java.util.Collection int java.lang.String top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* s */
        start local 4 // java.lang.String s
         4: .line 92
            aload 0 /* key */
            aload 4 /* s */
            invokestatic com.sun.xml.internal.bind.v2.util.EditDistance.editDistance:(Ljava/lang/String;Ljava/lang/String;)I
            istore 6 /* ed */
        start local 6 // int ed
         5: .line 93
            iload 2 /* c */
            iload 6 /* ed */
            if_icmple 8
         6: .line 94
            iload 6 /* ed */
            istore 2 /* c */
         7: .line 95
            aload 4 /* s */
            astore 3 /* r */
        end local 6 // int ed
        end local 4 // java.lang.String s
         8: .line 91
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         9: .line 98
            aload 3 /* r */
            areturn
        end local 3 // java.lang.String r
        end local 2 // int c
        end local 1 // java.util.Collection group
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0    key  Ljava/lang/String;
            0   10     1  group  Ljava/util/Collection<Ljava/lang/String;>;
            1   10     2      c  I
            2   10     3      r  Ljava/lang/String;
            4    8     4      s  Ljava/lang/String;
            5    8     6     ed  I
    Signature: (Ljava/lang/String;Ljava/util/Collection<Ljava/lang/String;>;)Ljava/lang/String;
    MethodParameters:
       Name  Flags
      key    
      group  

  private void <init>(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.sun.xml.internal.bind.v2.util.EditDistance this
        start local 1 // java.lang.String a
        start local 2 // java.lang.String b
         0: .line 109
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 110
            aload 0 /* this */
            aload 1 /* a */
            putfield com.sun.xml.internal.bind.v2.util.EditDistance.a:Ljava/lang/String;
         2: .line 111
            aload 0 /* this */
            aload 2 /* b */
            putfield com.sun.xml.internal.bind.v2.util.EditDistance.b:Ljava/lang/String;
         3: .line 112
            aload 0 /* this */
            aload 1 /* a */
            invokevirtual java.lang.String.length:()I
            iconst_1
            iadd
            newarray 10
            putfield com.sun.xml.internal.bind.v2.util.EditDistance.cost:[I
         4: .line 113
            aload 0 /* this */
            aload 1 /* a */
            invokevirtual java.lang.String.length:()I
            iconst_1
            iadd
            newarray 10
            putfield com.sun.xml.internal.bind.v2.util.EditDistance.back:[I
         5: .line 115
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         6: goto 9
         7: .line 116
      StackMap locals: com.sun.xml.internal.bind.v2.util.EditDistance java.lang.String java.lang.String int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.cost:[I
            iload 3 /* i */
            iload 3 /* i */
            iastore
         8: .line 115
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 3 /* i */
            aload 1 /* a */
            invokevirtual java.lang.String.length:()I
            if_icmple 7
        end local 3 // int i
        10: .line 117
            return
        end local 2 // java.lang.String b
        end local 1 // java.lang.String a
        end local 0 // com.sun.xml.internal.bind.v2.util.EditDistance this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lcom/sun/xml/internal/bind/v2/util/EditDistance;
            0   11     1     a  Ljava/lang/String;
            0   11     2     b  Ljava/lang/String;
            6   10     3     i  I
    MethodParameters:
      Name  Flags
      a     
      b     

  private void flip();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.xml.internal.bind.v2.util.EditDistance this
         0: .line 123
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.cost:[I
            astore 1 /* t */
        start local 1 // int[] t
         1: .line 124
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.back:[I
            putfield com.sun.xml.internal.bind.v2.util.EditDistance.cost:[I
         2: .line 125
            aload 0 /* this */
            aload 1 /* t */
            putfield com.sun.xml.internal.bind.v2.util.EditDistance.back:[I
         3: .line 126
            return
        end local 1 // int[] t
        end local 0 // com.sun.xml.internal.bind.v2.util.EditDistance this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/sun/xml/internal/bind/v2/util/EditDistance;
            1    4     1     t  [I

  private int min(int, int, int);
    descriptor: (III)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.sun.xml.internal.bind.v2.util.EditDistance this
        start local 1 // int a
        start local 2 // int b
        start local 3 // int c
         0: .line 129
            iload 1 /* a */
            iload 2 /* b */
            iload 3 /* c */
            invokestatic java.lang.Math.min:(II)I
            invokestatic java.lang.Math.min:(II)I
            ireturn
        end local 3 // int c
        end local 2 // int b
        end local 1 // int a
        end local 0 // com.sun.xml.internal.bind.v2.util.EditDistance this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/xml/internal/bind/v2/util/EditDistance;
            0    1     1     a  I
            0    1     2     b  I
            0    1     3     c  I
    MethodParameters:
      Name  Flags
      a     
      b     
      c     

  private int calc();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=4, args_size=1
        start local 0 // com.sun.xml.internal.bind.v2.util.EditDistance this
         0: .line 133
            iconst_0
            istore 1 /* j */
        start local 1 // int j
         1: goto 13
         2: .line 134
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.xml.internal.bind.v2.util.EditDistance.flip:()V
         3: .line 135
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.cost:[I
            iconst_0
            iload 1 /* j */
            iconst_1
            iadd
            iastore
         4: .line 136
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         5: goto 11
         6: .line 137
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.a:Ljava/lang/String;
            iload 2 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.b:Ljava/lang/String;
            iload 1 /* j */
            invokevirtual java.lang.String.charAt:(I)C
            if_icmpne 7
            iconst_0
            goto 8
      StackMap locals:
      StackMap stack:
         7: iconst_1
      StackMap locals:
      StackMap stack: int
         8: istore 3 /* match */
        start local 3 // int match
         9: .line 138
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.cost:[I
            iload 2 /* i */
            iconst_1
            iadd
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.back:[I
            iload 2 /* i */
            iaload
            iload 3 /* match */
            iadd
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.cost:[I
            iload 2 /* i */
            iaload
            iconst_1
            iadd
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.back:[I
            iload 2 /* i */
            iconst_1
            iadd
            iaload
            iconst_1
            iadd
            invokevirtual com.sun.xml.internal.bind.v2.util.EditDistance.min:(III)I
            iastore
        end local 3 // int match
        10: .line 136
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 2 /* i */
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.a:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmplt 6
        end local 2 // int i
        12: .line 133
            iinc 1 /* j */ 1
      StackMap locals:
      StackMap stack:
        13: iload 1 /* j */
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.b:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmplt 2
        end local 1 // int j
        14: .line 141
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.cost:[I
            aload 0 /* this */
            getfield com.sun.xml.internal.bind.v2.util.EditDistance.a:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iaload
            ireturn
        end local 0 // com.sun.xml.internal.bind.v2.util.EditDistance this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   15     0   this  Lcom/sun/xml/internal/bind/v2/util/EditDistance;
            1   14     1      j  I
            5   12     2      i  I
            9   10     3  match  I
}
SourceFile: "EditDistance.java"
InnerClasses:
  public SimpleEntry = java.util.AbstractMap$SimpleEntry of java.util.AbstractMap