public class jdk.internal.org.jline.utils.Levenshtein
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.internal.org.jline.utils.Levenshtein
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.internal.org.jline.utils.Levenshtein this
         0: .line 46
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // jdk.internal.org.jline.utils.Levenshtein this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/org/jline/utils/Levenshtein;

  public static int distance(java.lang.CharSequence, java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // java.lang.CharSequence lhs
        start local 1 // java.lang.CharSequence rhs
         0: .line 49
            aload 0 /* lhs */
            aload 1 /* rhs */
            iconst_1
            iconst_1
            iconst_1
            iconst_1
            invokestatic jdk.internal.org.jline.utils.Levenshtein.distance:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;IIII)I
            ireturn
        end local 1 // java.lang.CharSequence rhs
        end local 0 // java.lang.CharSequence lhs
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   lhs  Ljava/lang/CharSequence;
            0    1     1   rhs  Ljava/lang/CharSequence;
    MethodParameters:
      Name  Flags
      lhs   
      rhs   

  public static int distance(java.lang.CharSequence, java.lang.CharSequence, int, int, int, int);
    descriptor: (Ljava/lang/CharSequence;Ljava/lang/CharSequence;IIII)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=19, args_size=6
        start local 0 // java.lang.CharSequence source
        start local 1 // java.lang.CharSequence target
        start local 2 // int deleteCost
        start local 3 // int insertCost
        start local 4 // int replaceCost
        start local 5 // int swapCost
         0: .line 59
            iconst_2
            iload 5 /* swapCost */
            imul
            iload 3 /* insertCost */
            iload 2 /* deleteCost */
            iadd
            if_icmpge 2
         1: .line 60
            new java.lang.IllegalArgumentException
            dup
            ldc "Unsupported cost assignment"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 62
      StackMap locals:
      StackMap stack:
            aload 0 /* source */
            invokeinterface java.lang.CharSequence.length:()I
            ifne 4
         3: .line 63
            aload 1 /* target */
            invokeinterface java.lang.CharSequence.length:()I
            iload 3 /* insertCost */
            imul
            ireturn
         4: .line 65
      StackMap locals:
      StackMap stack:
            aload 1 /* target */
            invokeinterface java.lang.CharSequence.length:()I
            ifne 6
         5: .line 66
            aload 0 /* source */
            invokeinterface java.lang.CharSequence.length:()I
            iload 2 /* deleteCost */
            imul
            ireturn
         6: .line 68
      StackMap locals:
      StackMap stack:
            aload 0 /* source */
            invokeinterface java.lang.CharSequence.length:()I
            aload 1 /* target */
            invokeinterface java.lang.CharSequence.length:()I
            multianewarray [[I 2
            astore 6 /* table */
        start local 6 // int[][] table
         7: .line 69
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 7 /* sourceIndexByCharacter */
        start local 7 // java.util.Map sourceIndexByCharacter
         8: .line 70
            aload 0 /* source */
            iconst_0
            invokeinterface java.lang.CharSequence.charAt:(I)C
            aload 1 /* target */
            iconst_0
            invokeinterface java.lang.CharSequence.charAt:(I)C
            if_icmpeq 10
         9: .line 71
            aload 6 /* table */
            iconst_0
            aaload
            iconst_0
            iload 4 /* replaceCost */
            iload 2 /* deleteCost */
            iload 3 /* insertCost */
            iadd
            invokestatic java.lang.Math.min:(II)I
            iastore
        10: .line 73
      StackMap locals: int[][] java.util.Map
      StackMap stack:
            aload 7 /* sourceIndexByCharacter */
            aload 0 /* source */
            iconst_0
            invokeinterface java.lang.CharSequence.charAt:(I)C
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 74
            iconst_1
            istore 8 /* i */
        start local 8 // int i
        12: goto 20
        13: .line 75
      StackMap locals: int
      StackMap stack:
            aload 6 /* table */
            iload 8 /* i */
            iconst_1
            isub
            aaload
            iconst_0
            iaload
            iload 2 /* deleteCost */
            iadd
            istore 9 /* deleteDistance */
        start local 9 // int deleteDistance
        14: .line 76
            iload 8 /* i */
            iconst_1
            iadd
            iload 2 /* deleteCost */
            imul
            iload 3 /* insertCost */
            iadd
            istore 10 /* insertDistance */
        start local 10 // int insertDistance
        15: .line 77
            iload 8 /* i */
            iload 2 /* deleteCost */
            imul
            aload 0 /* source */
            iload 8 /* i */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            aload 1 /* target */
            iconst_0
            invokeinterface java.lang.CharSequence.charAt:(I)C
            if_icmpne 16
            iconst_0
            goto 17
      StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int
      StackMap stack: int
        16: iload 4 /* replaceCost */
      StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int
      StackMap stack: int int
        17: iadd
            istore 11 /* matchDistance */
        start local 11 // int matchDistance
        18: .line 78
            aload 6 /* table */
            iload 8 /* i */
            aaload
            iconst_0
            iload 9 /* deleteDistance */
            iload 10 /* insertDistance */
            invokestatic java.lang.Math.min:(II)I
            iload 11 /* matchDistance */
            invokestatic java.lang.Math.min:(II)I
            iastore
        end local 11 // int matchDistance
        end local 10 // int insertDistance
        end local 9 // int deleteDistance
        19: .line 74
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 8 /* i */
            aload 0 /* source */
            invokeinterface java.lang.CharSequence.length:()I
            if_icmplt 13
        end local 8 // int i
        21: .line 80
            iconst_1
            istore 8 /* j */
        start local 8 // int j
        22: goto 30
        23: .line 81
      StackMap locals:
      StackMap stack:
            iload 8 /* j */
            iconst_1
            iadd
            iload 3 /* insertCost */
            imul
            iload 2 /* deleteCost */
            iadd
            istore 9 /* deleteDistance */
        start local 9 // int deleteDistance
        24: .line 82
            aload 6 /* table */
            iconst_0
            aaload
            iload 8 /* j */
            iconst_1
            isub
            iaload
            iload 3 /* insertCost */
            iadd
            istore 10 /* insertDistance */
        start local 10 // int insertDistance
        25: .line 83
            iload 8 /* j */
            iload 3 /* insertCost */
            imul
            aload 0 /* source */
            iconst_0
            invokeinterface java.lang.CharSequence.charAt:(I)C
            aload 1 /* target */
            iload 8 /* j */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            if_icmpne 26
            iconst_0
            goto 27
      StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int
      StackMap stack: int
        26: iload 4 /* replaceCost */
      StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int
      StackMap stack: int int
        27: iadd
            istore 11 /* matchDistance */
        start local 11 // int matchDistance
        28: .line 84
            aload 6 /* table */
            iconst_0
            aaload
            iload 8 /* j */
            iload 9 /* deleteDistance */
            iload 10 /* insertDistance */
            invokestatic java.lang.Math.min:(II)I
            iload 11 /* matchDistance */
            invokestatic java.lang.Math.min:(II)I
            iastore
        end local 11 // int matchDistance
        end local 10 // int insertDistance
        end local 9 // int deleteDistance
        29: .line 80
            iinc 8 /* j */ 1
      StackMap locals:
      StackMap stack:
        30: iload 8 /* j */
            aload 1 /* target */
            invokeinterface java.lang.CharSequence.length:()I
            if_icmplt 23
        end local 8 // int j
        31: .line 86
            iconst_1
            istore 8 /* i */
        start local 8 // int i
        32: goto 61
        33: .line 87
      StackMap locals:
      StackMap stack:
            aload 0 /* source */
            iload 8 /* i */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            aload 1 /* target */
            iconst_0
            invokeinterface java.lang.CharSequence.charAt:(I)C
            if_icmpne 34
            iconst_0
            goto 35
      StackMap locals:
      StackMap stack:
        34: iconst_m1
      StackMap locals:
      StackMap stack: int
        35: istore 9 /* maxSourceLetterMatchIndex */
        start local 9 // int maxSourceLetterMatchIndex
        36: .line 88
            iconst_1
            istore 10 /* j */
        start local 10 // int j
        37: goto 58
        38: .line 89
      StackMap locals: int int
      StackMap stack:
            aload 7 /* sourceIndexByCharacter */
            aload 1 /* target */
            iload 10 /* j */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 11 /* candidateSwapIndex */
        start local 11 // java.lang.Integer candidateSwapIndex
        39: .line 90
            iload 9 /* maxSourceLetterMatchIndex */
            istore 12 /* jSwap */
        start local 12 // int jSwap
        40: .line 91
            aload 6 /* table */
            iload 8 /* i */
            iconst_1
            isub
            aaload
            iload 10 /* j */
            iaload
            iload 2 /* deleteCost */
            iadd
            istore 13 /* deleteDistance */
        start local 13 // int deleteDistance
        41: .line 92
            aload 6 /* table */
            iload 8 /* i */
            aaload
            iload 10 /* j */
            iconst_1
            isub
            iaload
            iload 3 /* insertCost */
            iadd
            istore 14 /* insertDistance */
        start local 14 // int insertDistance
        42: .line 93
            aload 6 /* table */
            iload 8 /* i */
            iconst_1
            isub
            aaload
            iload 10 /* j */
            iconst_1
            isub
            iaload
            istore 15 /* matchDistance */
        start local 15 // int matchDistance
        43: .line 94
            aload 0 /* source */
            iload 8 /* i */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            aload 1 /* target */
            iload 10 /* j */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            if_icmpeq 46
        44: .line 95
            iload 15 /* matchDistance */
            iload 4 /* replaceCost */
            iadd
            istore 15 /* matchDistance */
        45: .line 96
            goto 47
        46: .line 97
      StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int java.lang.Integer int int int int
      StackMap stack:
            iload 10 /* j */
            istore 9 /* maxSourceLetterMatchIndex */
        47: .line 100
      StackMap locals:
      StackMap stack:
            aload 11 /* candidateSwapIndex */
            ifnull 55
            iload 12 /* jSwap */
            iconst_m1
            if_icmpeq 55
        48: .line 101
            aload 11 /* candidateSwapIndex */
            invokevirtual java.lang.Integer.intValue:()I
            istore 17 /* iSwap */
        start local 17 // int iSwap
        49: .line 103
            iload 17 /* iSwap */
            ifne 52
            iload 12 /* jSwap */
            ifne 52
        50: .line 104
            iconst_0
            istore 18 /* preSwapCost */
        start local 18 // int preSwapCost
        51: .line 105
            goto 53
        end local 18 // int preSwapCost
        52: .line 106
      StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int java.lang.Integer int int int int top int
      StackMap stack:
            aload 6 /* table */
            iconst_0
            iload 17 /* iSwap */
            iconst_1
            isub
            invokestatic java.lang.Math.max:(II)I
            aaload
            iconst_0
            iload 12 /* jSwap */
            iconst_1
            isub
            invokestatic java.lang.Math.max:(II)I
            iaload
            istore 18 /* preSwapCost */
        start local 18 // int preSwapCost
        53: .line 108
      StackMap locals: int
      StackMap stack:
            iload 18 /* preSwapCost */
            iload 8 /* i */
            iload 17 /* iSwap */
            isub
            iconst_1
            isub
            iload 2 /* deleteCost */
            imul
            iadd
            iload 10 /* j */
            iload 12 /* jSwap */
            isub
            iconst_1
            isub
            iload 3 /* insertCost */
            imul
            iadd
            iload 5 /* swapCost */
            iadd
            istore 16 /* swapDistance */
        end local 18 // int preSwapCost
        end local 17 // int iSwap
        start local 16 // int swapDistance
        54: .line 109
            goto 56
        end local 16 // int swapDistance
        55: .line 110
      StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int java.lang.Integer int int int int
      StackMap stack:
            ldc 2147483647
            istore 16 /* swapDistance */
        start local 16 // int swapDistance
        56: .line 112
      StackMap locals: int
      StackMap stack:
            aload 6 /* table */
            iload 8 /* i */
            aaload
            iload 10 /* j */
            iload 13 /* deleteDistance */
            iload 14 /* insertDistance */
            invokestatic java.lang.Math.min:(II)I
            iload 15 /* matchDistance */
            invokestatic java.lang.Math.min:(II)I
            iload 16 /* swapDistance */
            invokestatic java.lang.Math.min:(II)I
            iastore
        end local 16 // int swapDistance
        end local 15 // int matchDistance
        end local 14 // int insertDistance
        end local 13 // int deleteDistance
        end local 12 // int jSwap
        end local 11 // java.lang.Integer candidateSwapIndex
        57: .line 88
            iinc 10 /* j */ 1
      StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int
      StackMap stack:
        58: iload 10 /* j */
            aload 1 /* target */
            invokeinterface java.lang.CharSequence.length:()I
            if_icmplt 38
        end local 10 // int j
        59: .line 114
            aload 7 /* sourceIndexByCharacter */
            aload 0 /* source */
            iload 8 /* i */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            iload 8 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 9 // int maxSourceLetterMatchIndex
        60: .line 86
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        61: iload 8 /* i */
            aload 0 /* source */
            invokeinterface java.lang.CharSequence.length:()I
            if_icmplt 33
        end local 8 // int i
        62: .line 116
            aload 6 /* table */
            aload 0 /* source */
            invokeinterface java.lang.CharSequence.length:()I
            iconst_1
            isub
            aaload
            aload 1 /* target */
            invokeinterface java.lang.CharSequence.length:()I
            iconst_1
            isub
            iaload
            ireturn
        end local 7 // java.util.Map sourceIndexByCharacter
        end local 6 // int[][] table
        end local 5 // int swapCost
        end local 4 // int replaceCost
        end local 3 // int insertCost
        end local 2 // int deleteCost
        end local 1 // java.lang.CharSequence target
        end local 0 // java.lang.CharSequence source
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   63     0                     source  Ljava/lang/CharSequence;
            0   63     1                     target  Ljava/lang/CharSequence;
            0   63     2                 deleteCost  I
            0   63     3                 insertCost  I
            0   63     4                replaceCost  I
            0   63     5                   swapCost  I
            7   63     6                      table  [[I
            8   63     7     sourceIndexByCharacter  Ljava/util/Map<Ljava/lang/Character;Ljava/lang/Integer;>;
           12   21     8                          i  I
           14   19     9             deleteDistance  I
           15   19    10             insertDistance  I
           18   19    11              matchDistance  I
           22   31     8                          j  I
           24   29     9             deleteDistance  I
           25   29    10             insertDistance  I
           28   29    11              matchDistance  I
           32   62     8                          i  I
           36   60     9  maxSourceLetterMatchIndex  I
           37   59    10                          j  I
           39   57    11         candidateSwapIndex  Ljava/lang/Integer;
           40   57    12                      jSwap  I
           41   57    13             deleteDistance  I
           42   57    14             insertDistance  I
           43   57    15              matchDistance  I
           54   55    16               swapDistance  I
           56   57    16               swapDistance  I
           49   54    17                      iSwap  I
           51   52    18                preSwapCost  I
           53   54    18                preSwapCost  I
    MethodParameters:
             Name  Flags
      source       
      target       
      deleteCost   
      insertCost   
      replaceCost  
      swapCost     
}
SourceFile: "Levenshtein.java"