public final class android.service.autofill.LuhnChecksumValidator extends android.service.autofill.InternalValidator implements android.service.autofill.Validator, android.os.Parcelable
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: android.service.autofill.LuhnChecksumValidator
  super_class: android.service.autofill.InternalValidator
{
  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "LuhnChecksumValidator"

  private final android.view.autofill.AutofillId[] mIds;
    descriptor: [Landroid/view/autofill/AutofillId;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public static final android.os.Parcelable$Creator<android.service.autofill.LuhnChecksumValidator> CREATOR;
    descriptor: Landroid/os/Parcelable$Creator;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Signature: Landroid/os/Parcelable$Creator<Landroid/service/autofill/LuhnChecksumValidator;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 128
            new android.service.autofill.LuhnChecksumValidator$1
            dup
            invokespecial android.service.autofill.LuhnChecksumValidator$1.<init>:()V
         1: .line 127
            putstatic android.service.autofill.LuhnChecksumValidator.CREATOR:Landroid/os/Parcelable$Creator;
         2: .line 138
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(android.view.autofill.AutofillId[]);
    descriptor: ([Landroid/view/autofill/AutofillId;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.service.autofill.LuhnChecksumValidator this
        start local 1 // android.view.autofill.AutofillId[] ids
         0: .line 49
            aload 0 /* this */
            invokespecial android.service.autofill.InternalValidator.<init>:()V
         1: .line 50
            aload 0 /* this */
            aload 1 /* ids */
            ldc "ids"
            invokestatic com.android.internal.util.Preconditions.checkArrayElementsNotNull:([Ljava/lang/Object;Ljava/lang/String;)[Ljava/lang/Object;
            checkcast android.view.autofill.AutofillId[]
            putfield android.service.autofill.LuhnChecksumValidator.mIds:[Landroid/view/autofill/AutofillId;
         2: .line 51
            return
        end local 1 // android.view.autofill.AutofillId[] ids
        end local 0 // android.service.autofill.LuhnChecksumValidator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/service/autofill/LuhnChecksumValidator;
            0    3     1   ids  [Landroid/view/autofill/AutofillId;
    MethodParameters:
      Name  Flags
      ids   

  private static boolean isLuhnChecksumValid(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // java.lang.String number
         0: .line 59
            iconst_0
            istore 1 /* sum */
        start local 1 // int sum
         1: .line 60
            iconst_0
            istore 2 /* isDoubled */
        start local 2 // boolean isDoubled
         2: .line 62
            aload 0 /* number */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            istore 3 /* i */
        start local 3 // int i
         3: goto 18
         4: .line 63
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* number */
            iload 3 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            bipush 48
            isub
            istore 4 /* digit */
        start local 4 // int digit
         5: .line 64
            iload 4 /* digit */
            iflt 17
            iload 4 /* digit */
            bipush 9
            if_icmple 7
         6: .line 66
            goto 17
         7: .line 70
      StackMap locals: int
      StackMap stack:
            iload 2 /* isDoubled */
            ifeq 12
         8: .line 71
            iload 4 /* digit */
            iconst_2
            imul
            istore 5 /* addend */
        start local 5 // int addend
         9: .line 72
            iload 5 /* addend */
            bipush 9
            if_icmple 13
        10: .line 73
            iinc 5 /* addend */ -9
        11: .line 75
            goto 13
        end local 5 // int addend
        12: .line 76
      StackMap locals:
      StackMap stack:
            iload 4 /* digit */
            istore 5 /* addend */
        start local 5 // int addend
        13: .line 78
      StackMap locals: int
      StackMap stack:
            iload 1 /* sum */
            iload 5 /* addend */
            iadd
            istore 1 /* sum */
        14: .line 79
            iload 2 /* isDoubled */
            ifeq 15
            iconst_0
            goto 16
      StackMap locals:
      StackMap stack:
        15: iconst_1
      StackMap locals:
      StackMap stack: int
        16: istore 2 /* isDoubled */
        end local 5 // int addend
        end local 4 // int digit
        17: .line 62
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ -1
      StackMap locals:
      StackMap stack:
        18: iload 3 /* i */
            ifge 4
        end local 3 // int i
        19: .line 82
            iload 1 /* sum */
            bipush 10
            irem
            ifne 20
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        20: iconst_0
            ireturn
        end local 2 // boolean isDoubled
        end local 1 // int sum
        end local 0 // java.lang.String number
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   21     0     number  Ljava/lang/String;
            1   21     1        sum  I
            2   21     2  isDoubled  Z
            3   19     3          i  I
            5   17     4      digit  I
            9   12     5     addend  I
           13   17     5     addend  I
    MethodParameters:
        Name  Flags
      number  

  public boolean isValid(android.service.autofill.ValueFinder);
    descriptor: (Landroid/service/autofill/ValueFinder;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // android.service.autofill.LuhnChecksumValidator this
        start local 1 // android.service.autofill.ValueFinder finder
         0: .line 89
            aload 0 /* this */
            getfield android.service.autofill.LuhnChecksumValidator.mIds:[Landroid/view/autofill/AutofillId;
            ifnull 1
            aload 0 /* this */
            getfield android.service.autofill.LuhnChecksumValidator.mIds:[Landroid/view/autofill/AutofillId;
            arraylength
            ifne 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
         2: .line 91
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* builder */
        start local 2 // java.lang.StringBuilder builder
         3: .line 92
            aload 0 /* this */
            getfield android.service.autofill.LuhnChecksumValidator.mIds:[Landroid/view/autofill/AutofillId;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 11
      StackMap locals: android.service.autofill.LuhnChecksumValidator android.service.autofill.ValueFinder java.lang.StringBuilder top int int android.view.autofill.AutofillId[]
      StackMap stack:
         4: aload 6
            iload 4
            aaload
            astore 3 /* id */
        start local 3 // android.view.autofill.AutofillId id
         5: .line 93
            aload 1 /* finder */
            aload 3 /* id */
            invokeinterface android.service.autofill.ValueFinder.findByAutofillId:(Landroid/view/autofill/AutofillId;)Ljava/lang/String;
            astore 7 /* partialNumber */
        start local 7 // java.lang.String partialNumber
         6: .line 94
            aload 7 /* partialNumber */
            ifnonnull 9
         7: .line 95
            getstatic android.view.autofill.Helper.sDebug:Z
            ifeq 8
            ldc "LuhnChecksumValidator"
            new java.lang.StringBuilder
            dup
            ldc "No partial number for id "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* id */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         8: .line 96
      StackMap locals: android.service.autofill.LuhnChecksumValidator android.service.autofill.ValueFinder java.lang.StringBuilder android.view.autofill.AutofillId int int android.view.autofill.AutofillId[] java.lang.String
      StackMap stack:
            iconst_0
            ireturn
         9: .line 98
      StackMap locals:
      StackMap stack:
            aload 2 /* builder */
            aload 7 /* partialNumber */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 7 // java.lang.String partialNumber
        end local 3 // android.view.autofill.AutofillId id
        10: .line 92
            iinc 4 1
      StackMap locals: android.service.autofill.LuhnChecksumValidator android.service.autofill.ValueFinder java.lang.StringBuilder top int int android.view.autofill.AutofillId[]
      StackMap stack:
        11: iload 4
            iload 5
            if_icmplt 4
        12: .line 101
            aload 2 /* builder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* number */
        start local 3 // java.lang.String number
        13: .line 102
            aload 3 /* number */
            invokestatic android.service.autofill.LuhnChecksumValidator.isLuhnChecksumValid:(Ljava/lang/String;)Z
            istore 4 /* valid */
        start local 4 // boolean valid
        14: .line 103
            getstatic android.view.autofill.Helper.sDebug:Z
            ifeq 15
            ldc "LuhnChecksumValidator"
            new java.lang.StringBuilder
            dup
            ldc "isValid("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* number */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " chars): "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 4 /* valid */
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        15: .line 104
      StackMap locals: android.service.autofill.LuhnChecksumValidator android.service.autofill.ValueFinder java.lang.StringBuilder java.lang.String int
      StackMap stack:
            iload 4 /* valid */
            ireturn
        end local 4 // boolean valid
        end local 3 // java.lang.String number
        end local 2 // java.lang.StringBuilder builder
        end local 1 // android.service.autofill.ValueFinder finder
        end local 0 // android.service.autofill.LuhnChecksumValidator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0           this  Landroid/service/autofill/LuhnChecksumValidator;
            0   16     1         finder  Landroid/service/autofill/ValueFinder;
            3   16     2        builder  Ljava/lang/StringBuilder;
            5   10     3             id  Landroid/view/autofill/AutofillId;
            6   10     7  partialNumber  Ljava/lang/String;
           13   16     3         number  Ljava/lang/String;
           14   16     4          valid  Z
    MethodParameters:
        Name  Flags
      finder  

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.service.autofill.LuhnChecksumValidator this
         0: .line 109
            getstatic android.view.autofill.Helper.sDebug:Z
            ifne 1
            aload 0 /* this */
            invokespecial java.lang.Object.toString:()Ljava/lang/String;
            areturn
         1: .line 111
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "LuhnChecksumValidator: [ids="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield android.service.autofill.LuhnChecksumValidator.mIds:[Landroid/view/autofill/AutofillId;
            invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)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;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // android.service.autofill.LuhnChecksumValidator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/service/autofill/LuhnChecksumValidator;

  public int describeContents();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.service.autofill.LuhnChecksumValidator this
         0: .line 119
            iconst_0
            ireturn
        end local 0 // android.service.autofill.LuhnChecksumValidator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/service/autofill/LuhnChecksumValidator;

  public void writeToParcel(android.os.Parcel, int);
    descriptor: (Landroid/os/Parcel;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.service.autofill.LuhnChecksumValidator this
        start local 1 // android.os.Parcel parcel
        start local 2 // int flags
         0: .line 124
            aload 1 /* parcel */
            aload 0 /* this */
            getfield android.service.autofill.LuhnChecksumValidator.mIds:[Landroid/view/autofill/AutofillId;
            iload 2 /* flags */
            invokevirtual android.os.Parcel.writeParcelableArray:([Landroid/os/Parcelable;I)V
         1: .line 125
            return
        end local 2 // int flags
        end local 1 // android.os.Parcel parcel
        end local 0 // android.service.autofill.LuhnChecksumValidator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/service/autofill/LuhnChecksumValidator;
            0    2     1  parcel  Landroid/os/Parcel;
            0    2     2   flags  I
    MethodParameters:
        Name  Flags
      parcel  
      flags   
}
SourceFile: "LuhnChecksumValidator.java"
NestMembers:
  android.service.autofill.LuhnChecksumValidator$1
InnerClasses:
  public abstract Creator = android.os.Parcelable$Creator of android.os.Parcelable
  android.service.autofill.LuhnChecksumValidator$1