public final class com.android.internal.graphics.ColorUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.android.internal.graphics.ColorUtils
  super_class: java.lang.Object
{
  private static final double XYZ_WHITE_REFERENCE_X;
    descriptor: D
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 95.047

  private static final double XYZ_WHITE_REFERENCE_Y;
    descriptor: D
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 100.0

  private static final double XYZ_WHITE_REFERENCE_Z;
    descriptor: D
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 108.883

  private static final double XYZ_EPSILON;
    descriptor: D
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0.008856

  private static final double XYZ_KAPPA;
    descriptor: D
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 903.3

  private static final int MIN_ALPHA_SEARCH_MAX_ITERATIONS;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 10

  private static final int MIN_ALPHA_SEARCH_PRECISION;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final java.lang.ThreadLocal<double[]> TEMP_ARRAY;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<[D>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 41
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
            putstatic com.android.internal.graphics.ColorUtils.TEMP_ARRAY:Ljava/lang/ThreadLocal;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.internal.graphics.ColorUtils this
         0: .line 43
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.android.internal.graphics.ColorUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/graphics/ColorUtils;

  public static int compositeColors(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=2
        start local 0 // int foreground
        start local 1 // int background
         0: .line 49
            iload 1 /* background */
            invokestatic android.graphics.Color.alpha:(I)I
            istore 2 /* bgAlpha */
        start local 2 // int bgAlpha
         1: .line 50
            iload 0 /* foreground */
            invokestatic android.graphics.Color.alpha:(I)I
            istore 3 /* fgAlpha */
        start local 3 // int fgAlpha
         2: .line 51
            iload 3 /* fgAlpha */
            iload 2 /* bgAlpha */
            invokestatic com.android.internal.graphics.ColorUtils.compositeAlpha:(II)I
            istore 4 /* a */
        start local 4 // int a
         3: .line 53
            iload 0 /* foreground */
            invokestatic android.graphics.Color.red:(I)I
            iload 3 /* fgAlpha */
         4: .line 54
            iload 1 /* background */
            invokestatic android.graphics.Color.red:(I)I
            iload 2 /* bgAlpha */
            iload 4 /* a */
         5: .line 53
            invokestatic com.android.internal.graphics.ColorUtils.compositeComponent:(IIIII)I
            istore 5 /* r */
        start local 5 // int r
         6: .line 55
            iload 0 /* foreground */
            invokestatic android.graphics.Color.green:(I)I
            iload 3 /* fgAlpha */
         7: .line 56
            iload 1 /* background */
            invokestatic android.graphics.Color.green:(I)I
            iload 2 /* bgAlpha */
            iload 4 /* a */
         8: .line 55
            invokestatic com.android.internal.graphics.ColorUtils.compositeComponent:(IIIII)I
            istore 6 /* g */
        start local 6 // int g
         9: .line 57
            iload 0 /* foreground */
            invokestatic android.graphics.Color.blue:(I)I
            iload 3 /* fgAlpha */
        10: .line 58
            iload 1 /* background */
            invokestatic android.graphics.Color.blue:(I)I
            iload 2 /* bgAlpha */
            iload 4 /* a */
        11: .line 57
            invokestatic com.android.internal.graphics.ColorUtils.compositeComponent:(IIIII)I
            istore 7 /* b */
        start local 7 // int b
        12: .line 60
            iload 4 /* a */
            iload 5 /* r */
            iload 6 /* g */
            iload 7 /* b */
            invokestatic android.graphics.Color.argb:(IIII)I
            ireturn
        end local 7 // int b
        end local 6 // int g
        end local 5 // int r
        end local 4 // int a
        end local 3 // int fgAlpha
        end local 2 // int bgAlpha
        end local 1 // int background
        end local 0 // int foreground
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0  foreground  I
            0   13     1  background  I
            1   13     2     bgAlpha  I
            2   13     3     fgAlpha  I
            3   13     4           a  I
            6   13     5           r  I
            9   13     6           g  I
           12   13     7           b  I
    MethodParameters:
            Name  Flags
      foreground  
      background  

  private static int compositeAlpha(int, int);
    descriptor: (II)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int foregroundAlpha
        start local 1 // int backgroundAlpha
         0: .line 64
            sipush 255
            sipush 255
            iload 1 /* backgroundAlpha */
            isub
            sipush 255
            iload 0 /* foregroundAlpha */
            isub
            imul
            sipush 255
            idiv
            isub
            ireturn
        end local 1 // int backgroundAlpha
        end local 0 // int foregroundAlpha
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0  foregroundAlpha  I
            0    1     1  backgroundAlpha  I
    MethodParameters:
                 Name  Flags
      foregroundAlpha  
      backgroundAlpha  

  private static int compositeComponent(int, int, int, int, int);
    descriptor: (IIIII)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // int fgC
        start local 1 // int fgA
        start local 2 // int bgC
        start local 3 // int bgA
        start local 4 // int a
         0: .line 68
            iload 4 /* a */
            ifne 1
            iconst_0
            ireturn
         1: .line 69
      StackMap locals:
      StackMap stack:
            sipush 255
            iload 0 /* fgC */
            imul
            iload 1 /* fgA */
            imul
            iload 2 /* bgC */
            iload 3 /* bgA */
            imul
            sipush 255
            iload 1 /* fgA */
            isub
            imul
            iadd
            iload 4 /* a */
            sipush 255
            imul
            idiv
            ireturn
        end local 4 // int a
        end local 3 // int bgA
        end local 2 // int bgC
        end local 1 // int fgA
        end local 0 // int fgC
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   fgC  I
            0    2     1   fgA  I
            0    2     2   bgC  I
            0    2     3   bgA  I
            0    2     4     a  I
    MethodParameters:
      Name  Flags
      fgC   
      fgA   
      bgC   
      bgA   
      a     

  public static double calculateLuminance(int);
    descriptor: (I)D
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // int color
         0: .line 78
            invokestatic com.android.internal.graphics.ColorUtils.getTempDouble3Array:()[D
            astore 1 /* result */
        start local 1 // double[] result
         1: .line 79
            iload 0 /* color */
            aload 1 /* result */
            invokestatic com.android.internal.graphics.ColorUtils.colorToXYZ:(I[D)V
         2: .line 81
            aload 1 /* result */
            iconst_1
            daload
            ldc 100.0
            ddiv
            dreturn
        end local 1 // double[] result
        end local 0 // int color
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0   color  I
            1    3     1  result  [D
    MethodParameters:
       Name  Flags
      color  

  public static double calculateContrast(int, int);
    descriptor: (II)D
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // int foreground
        start local 1 // int background
         0: .line 92
            iload 1 /* background */
            invokestatic android.graphics.Color.alpha:(I)I
            sipush 255
            if_icmpeq 4
         1: .line 93
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "background can not be translucent: #"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 94
            iload 1 /* background */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 93
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 96
      StackMap locals:
      StackMap stack:
            iload 0 /* foreground */
            invokestatic android.graphics.Color.alpha:(I)I
            sipush 255
            if_icmpge 6
         5: .line 98
            iload 0 /* foreground */
            iload 1 /* background */
            invokestatic com.android.internal.graphics.ColorUtils.compositeColors:(II)I
            istore 0 /* foreground */
         6: .line 101
      StackMap locals:
      StackMap stack:
            iload 0 /* foreground */
            invokestatic com.android.internal.graphics.ColorUtils.calculateLuminance:(I)D
            ldc 0.05
            dadd
            dstore 2 /* luminance1 */
        start local 2 // double luminance1
         7: .line 102
            iload 1 /* background */
            invokestatic com.android.internal.graphics.ColorUtils.calculateLuminance:(I)D
            ldc 0.05
            dadd
            dstore 4 /* luminance2 */
        start local 4 // double luminance2
         8: .line 105
            dload 2 /* luminance1 */
            dload 4 /* luminance2 */
            invokestatic java.lang.Math.max:(DD)D
            dload 2 /* luminance1 */
            dload 4 /* luminance2 */
            invokestatic java.lang.Math.min:(DD)D
            ddiv
            dreturn
        end local 4 // double luminance2
        end local 2 // double luminance1
        end local 1 // int background
        end local 0 // int foreground
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0  foreground  I
            0    9     1  background  I
            7    9     2  luminance1  D
            8    9     4  luminance2  D
    MethodParameters:
            Name  Flags
      foreground  
      background  

  public static int calculateMinimumBackgroundAlpha(int, int, float);
    descriptor: (IIF)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // int foreground
        start local 1 // int background
        start local 2 // float minContrastRatio
         0: .line 122
            iload 1 /* background */
            sipush 255
            invokestatic com.android.internal.graphics.ColorUtils.setAlphaComponent:(II)I
            istore 1 /* background */
         1: .line 123
            iload 0 /* foreground */
            sipush 255
            invokestatic com.android.internal.graphics.ColorUtils.setAlphaComponent:(II)I
            istore 3 /* leastContrastyColor */
        start local 3 // int leastContrastyColor
         2: .line 124
            iload 0 /* foreground */
            iload 1 /* background */
            fload 2 /* minContrastRatio */
            iload 3 /* leastContrastyColor */
            invokedynamic calculateContrast(I)Lcom/android/internal/graphics/ColorUtils$ContrastCalculator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (III)D
                  com/android/internal/graphics/ColorUtils.lambda$0(IIII)D (6)
                  (III)D
            invokestatic com.android.internal.graphics.ColorUtils.binaryAlphaSearch:(IIFLcom/android/internal/graphics/ColorUtils$ContrastCalculator;)I
            ireturn
        end local 3 // int leastContrastyColor
        end local 2 // float minContrastRatio
        end local 1 // int background
        end local 0 // int foreground
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    3     0           foreground  I
            0    3     1           background  I
            0    3     2     minContrastRatio  F
            2    3     3  leastContrastyColor  I
    MethodParameters:
                  Name  Flags
      foreground        
      background        
      minContrastRatio  

  public static int calculateMinimumAlpha(int, int, float);
    descriptor: (IIF)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // int foreground
        start local 1 // int background
        start local 2 // float minContrastRatio
         0: .line 145
            iload 1 /* background */
            invokestatic android.graphics.Color.alpha:(I)I
            sipush 255
            if_icmpeq 4
         1: .line 146
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "background can not be translucent: #"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 147
            iload 1 /* background */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 146
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 150
      StackMap locals:
      StackMap stack:
            invokedynamic calculateContrast()Lcom/android/internal/graphics/ColorUtils$ContrastCalculator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (III)D
                  com/android/internal/graphics/ColorUtils.lambda$1(III)D (6)
                  (III)D
            astore 3 /* contrastCalculator */
        start local 3 // com.android.internal.graphics.ColorUtils$ContrastCalculator contrastCalculator
         5: .line 156
            aload 3 /* contrastCalculator */
            iload 0 /* foreground */
            iload 1 /* background */
            sipush 255
            invokeinterface com.android.internal.graphics.ColorUtils$ContrastCalculator.calculateContrast:(III)D
            dstore 4 /* testRatio */
        start local 4 // double testRatio
         6: .line 157
            dload 4 /* testRatio */
            fload 2 /* minContrastRatio */
            f2d
            dcmpg
            ifge 8
         7: .line 159
            iconst_m1
            ireturn
         8: .line 161
      StackMap locals: com.android.internal.graphics.ColorUtils$ContrastCalculator double
      StackMap stack:
            iload 0 /* foreground */
            sipush 255
            invokestatic com.android.internal.graphics.ColorUtils.setAlphaComponent:(II)I
            istore 0 /* foreground */
         9: .line 162
            iload 0 /* foreground */
            iload 1 /* background */
            fload 2 /* minContrastRatio */
            aload 3 /* contrastCalculator */
            invokestatic com.android.internal.graphics.ColorUtils.binaryAlphaSearch:(IIFLcom/android/internal/graphics/ColorUtils$ContrastCalculator;)I
            ireturn
        end local 4 // double testRatio
        end local 3 // com.android.internal.graphics.ColorUtils$ContrastCalculator contrastCalculator
        end local 2 // float minContrastRatio
        end local 1 // int background
        end local 0 // int foreground
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   10     0          foreground  I
            0   10     1          background  I
            0   10     2    minContrastRatio  F
            5   10     3  contrastCalculator  Lcom/android/internal/graphics/ColorUtils$ContrastCalculator;
            6   10     4           testRatio  D
    MethodParameters:
                  Name  Flags
      foreground        
      background        
      minContrastRatio  

  private static int binaryAlphaSearch(int, int, float, com.android.internal.graphics.ColorUtils$ContrastCalculator);
    descriptor: (IIFLcom/android/internal/graphics/ColorUtils$ContrastCalculator;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=4
        start local 0 // int foreground
        start local 1 // int background
        start local 2 // float minContrastRatio
        start local 3 // com.android.internal.graphics.ColorUtils$ContrastCalculator calculator
         0: .line 178
            iconst_0
            istore 4 /* numIterations */
        start local 4 // int numIterations
         1: .line 179
            iconst_0
            istore 5 /* minAlpha */
        start local 5 // int minAlpha
         2: .line 180
            sipush 255
            istore 6 /* maxAlpha */
        start local 6 // int maxAlpha
         3: .line 182
            goto 13
         4: .line 184
      StackMap locals: int int int
      StackMap stack:
            iload 5 /* minAlpha */
            iload 6 /* maxAlpha */
            iadd
            iconst_2
            idiv
            istore 7 /* testAlpha */
        start local 7 // int testAlpha
         5: .line 186
            aload 3 /* calculator */
            iload 0 /* foreground */
            iload 1 /* background */
         6: .line 187
            iload 7 /* testAlpha */
         7: .line 186
            invokeinterface com.android.internal.graphics.ColorUtils$ContrastCalculator.calculateContrast:(III)D
            dstore 8 /* testRatio */
        start local 8 // double testRatio
         8: .line 188
            dload 8 /* testRatio */
            fload 2 /* minContrastRatio */
            f2d
            dcmpg
            ifge 11
         9: .line 189
            iload 7 /* testAlpha */
            istore 5 /* minAlpha */
        10: .line 190
            goto 12
        11: .line 191
      StackMap locals: int double
      StackMap stack:
            iload 7 /* testAlpha */
            istore 6 /* maxAlpha */
        12: .line 194
      StackMap locals:
      StackMap stack:
            iinc 4 /* numIterations */ 1
        end local 8 // double testRatio
        end local 7 // int testAlpha
        13: .line 182
      StackMap locals:
      StackMap stack:
            iload 4 /* numIterations */
            bipush 10
            if_icmpgt 16
        14: .line 183
            iload 6 /* maxAlpha */
            iload 5 /* minAlpha */
            isub
            iconst_1
        15: .line 182
            if_icmpgt 4
        16: .line 198
      StackMap locals:
      StackMap stack:
            iload 6 /* maxAlpha */
            ireturn
        end local 6 // int maxAlpha
        end local 5 // int minAlpha
        end local 4 // int numIterations
        end local 3 // com.android.internal.graphics.ColorUtils$ContrastCalculator calculator
        end local 2 // float minContrastRatio
        end local 1 // int background
        end local 0 // int foreground
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   17     0        foreground  I
            0   17     1        background  I
            0   17     2  minContrastRatio  F
            0   17     3        calculator  Lcom/android/internal/graphics/ColorUtils$ContrastCalculator;
            1   17     4     numIterations  I
            2   17     5          minAlpha  I
            3   17     6          maxAlpha  I
            5   13     7         testAlpha  I
            8   13     8         testRatio  D
    MethodParameters:
                  Name  Flags
      foreground        
      background        
      minContrastRatio  
      calculator        

  public static void RGBToHSL(int, int, int, float[]);
    descriptor: (III[F)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=13, args_size=4
        start local 0 // int r
        start local 1 // int g
        start local 2 // int b
        start local 3 // float[] outHsl
         0: .line 217
            iload 0 /* r */
            i2f
            ldc 255.0
            fdiv
            fstore 4 /* rf */
        start local 4 // float rf
         1: .line 218
            iload 1 /* g */
            i2f
            ldc 255.0
            fdiv
            fstore 5 /* gf */
        start local 5 // float gf
         2: .line 219
            iload 2 /* b */
            i2f
            ldc 255.0
            fdiv
            fstore 6 /* bf */
        start local 6 // float bf
         3: .line 221
            fload 4 /* rf */
            fload 5 /* gf */
            fload 6 /* bf */
            invokestatic java.lang.Math.max:(FF)F
            invokestatic java.lang.Math.max:(FF)F
            fstore 7 /* max */
        start local 7 // float max
         4: .line 222
            fload 4 /* rf */
            fload 5 /* gf */
            fload 6 /* bf */
            invokestatic java.lang.Math.min:(FF)F
            invokestatic java.lang.Math.min:(FF)F
            fstore 8 /* min */
        start local 8 // float min
         5: .line 223
            fload 7 /* max */
            fload 8 /* min */
            fsub
            fstore 9 /* deltaMaxMin */
        start local 9 // float deltaMaxMin
         6: .line 226
            fload 7 /* max */
            fload 8 /* min */
            fadd
            fconst_2
            fdiv
            fstore 12 /* l */
        start local 12 // float l
         7: .line 228
            fload 7 /* max */
            fload 8 /* min */
            fcmpl
            ifne 11
         8: .line 230
            fconst_0
            dup
            fstore 11 /* s */
        start local 11 // float s
         9: fstore 10 /* h */
        start local 10 // float h
        10: .line 231
            goto 19
        end local 11 // float s
        end local 10 // float h
        11: .line 232
      StackMap locals: int int int float[] float float float float float float top top float
      StackMap stack:
            fload 7 /* max */
            fload 4 /* rf */
            fcmpl
            ifne 14
        12: .line 233
            fload 5 /* gf */
            fload 6 /* bf */
            fsub
            fload 9 /* deltaMaxMin */
            fdiv
            ldc 6.0
            frem
            fstore 10 /* h */
        start local 10 // float h
        13: .line 234
            goto 18
        end local 10 // float h
      StackMap locals:
      StackMap stack:
        14: fload 7 /* max */
            fload 5 /* gf */
            fcmpl
            ifne 17
        15: .line 235
            fload 6 /* bf */
            fload 4 /* rf */
            fsub
            fload 9 /* deltaMaxMin */
            fdiv
            fconst_2
            fadd
            fstore 10 /* h */
        start local 10 // float h
        16: .line 236
            goto 18
        end local 10 // float h
        17: .line 237
      StackMap locals:
      StackMap stack:
            fload 4 /* rf */
            fload 5 /* gf */
            fsub
            fload 9 /* deltaMaxMin */
            fdiv
            ldc 4.0
            fadd
            fstore 10 /* h */
        start local 10 // float h
        18: .line 240
      StackMap locals: int int int float[] float float float float float float float top float
      StackMap stack:
            fload 9 /* deltaMaxMin */
            fconst_1
            fconst_2
            fload 12 /* l */
            fmul
            fconst_1
            fsub
            invokestatic java.lang.Math.abs:(F)F
            fsub
            fdiv
            fstore 11 /* s */
        start local 11 // float s
        19: .line 243
      StackMap locals: int int int float[] float float float float float float float float float
      StackMap stack:
            fload 10 /* h */
            ldc 60.0
            fmul
            ldc 360.0
            frem
            fstore 10 /* h */
        20: .line 244
            fload 10 /* h */
            fconst_0
            fcmpg
            ifge 22
        21: .line 245
            fload 10 /* h */
            ldc 360.0
            fadd
            fstore 10 /* h */
        22: .line 248
      StackMap locals:
      StackMap stack:
            aload 3 /* outHsl */
            iconst_0
            fload 10 /* h */
            fconst_0
            ldc 360.0
            invokestatic com.android.internal.graphics.ColorUtils.constrain:(FFF)F
            fastore
        23: .line 249
            aload 3 /* outHsl */
            iconst_1
            fload 11 /* s */
            fconst_0
            fconst_1
            invokestatic com.android.internal.graphics.ColorUtils.constrain:(FFF)F
            fastore
        24: .line 250
            aload 3 /* outHsl */
            iconst_2
            fload 12 /* l */
            fconst_0
            fconst_1
            invokestatic com.android.internal.graphics.ColorUtils.constrain:(FFF)F
            fastore
        25: .line 251
            return
        end local 12 // float l
        end local 11 // float s
        end local 10 // float h
        end local 9 // float deltaMaxMin
        end local 8 // float min
        end local 7 // float max
        end local 6 // float bf
        end local 5 // float gf
        end local 4 // float rf
        end local 3 // float[] outHsl
        end local 2 // int b
        end local 1 // int g
        end local 0 // int r
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   26     0            r  I
            0   26     1            g  I
            0   26     2            b  I
            0   26     3       outHsl  [F
            1   26     4           rf  F
            2   26     5           gf  F
            3   26     6           bf  F
            4   26     7          max  F
            5   26     8          min  F
            6   26     9  deltaMaxMin  F
           10   11    10            h  F
           13   14    10            h  F
           16   17    10            h  F
           18   26    10            h  F
            9   11    11            s  F
           19   26    11            s  F
            7   26    12            l  F
    MethodParameters:
        Name  Flags
      r       
      g       
      b       
      outHsl  

  public static void colorToHSL(int, float[]);
    descriptor: (I[F)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int color
        start local 1 // float[] outHsl
         0: .line 265
            iload 0 /* color */
            invokestatic android.graphics.Color.red:(I)I
            iload 0 /* color */
            invokestatic android.graphics.Color.green:(I)I
            iload 0 /* color */
            invokestatic android.graphics.Color.blue:(I)I
            aload 1 /* outHsl */
            invokestatic com.android.internal.graphics.ColorUtils.RGBToHSL:(III[F)V
         1: .line 266
            return
        end local 1 // float[] outHsl
        end local 0 // int color
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0   color  I
            0    2     1  outHsl  [F
    MethodParameters:
        Name  Flags
      color   
      outHsl  

  public static int HSLToColor(float[]);
    descriptor: ([F)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=11, args_size=1
        start local 0 // float[] hsl
         0: .line 282
            aload 0 /* hsl */
            iconst_0
            faload
            fstore 1 /* h */
        start local 1 // float h
         1: .line 283
            aload 0 /* hsl */
            iconst_1
            faload
            fstore 2 /* s */
        start local 2 // float s
         2: .line 284
            aload 0 /* hsl */
            iconst_2
            faload
            fstore 3 /* l */
        start local 3 // float l
         3: .line 286
            fconst_1
            fconst_2
            fload 3 /* l */
            fmul
            fconst_1
            fsub
            invokestatic java.lang.Math.abs:(F)F
            fsub
            fload 2 /* s */
            fmul
            fstore 4 /* c */
        start local 4 // float c
         4: .line 287
            fload 3 /* l */
            ldc 0.5
            fload 4 /* c */
            fmul
            fsub
            fstore 5 /* m */
        start local 5 // float m
         5: .line 288
            fload 4 /* c */
            fconst_1
            fload 1 /* h */
            ldc 60.0
            fdiv
            fconst_2
            frem
            fconst_1
            fsub
            invokestatic java.lang.Math.abs:(F)F
            fsub
            fmul
            fstore 6 /* x */
        start local 6 // float x
         6: .line 290
            fload 1 /* h */
            f2i
            bipush 60
            idiv
            istore 7 /* hueSegment */
        start local 7 // int hueSegment
         7: .line 292
            iconst_0
            istore 8 /* r */
        start local 8 // int r
         8: iconst_0
            istore 9 /* g */
        start local 9 // int g
         9: iconst_0
            istore 10 /* b */
        start local 10 // int b
        10: .line 294
            iload 7 /* hueSegment */
            tableswitch { // 0 - 6
                    0: 11
                    1: 15
                    2: 19
                    3: 23
                    4: 27
                    5: 31
                    6: 31
              default: 34
          }
        11: .line 296
      StackMap locals: float[] float float float float float float int int int int
      StackMap stack:
            ldc 255.0
            fload 4 /* c */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 8 /* r */
        12: .line 297
            ldc 255.0
            fload 6 /* x */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 9 /* g */
        13: .line 298
            ldc 255.0
            fload 5 /* m */
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 10 /* b */
        14: .line 299
            goto 34
        15: .line 301
      StackMap locals:
      StackMap stack:
            ldc 255.0
            fload 6 /* x */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 8 /* r */
        16: .line 302
            ldc 255.0
            fload 4 /* c */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 9 /* g */
        17: .line 303
            ldc 255.0
            fload 5 /* m */
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 10 /* b */
        18: .line 304
            goto 34
        19: .line 306
      StackMap locals:
      StackMap stack:
            ldc 255.0
            fload 5 /* m */
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 8 /* r */
        20: .line 307
            ldc 255.0
            fload 4 /* c */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 9 /* g */
        21: .line 308
            ldc 255.0
            fload 6 /* x */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 10 /* b */
        22: .line 309
            goto 34
        23: .line 311
      StackMap locals:
      StackMap stack:
            ldc 255.0
            fload 5 /* m */
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 8 /* r */
        24: .line 312
            ldc 255.0
            fload 6 /* x */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 9 /* g */
        25: .line 313
            ldc 255.0
            fload 4 /* c */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 10 /* b */
        26: .line 314
            goto 34
        27: .line 316
      StackMap locals:
      StackMap stack:
            ldc 255.0
            fload 6 /* x */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 8 /* r */
        28: .line 317
            ldc 255.0
            fload 5 /* m */
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 9 /* g */
        29: .line 318
            ldc 255.0
            fload 4 /* c */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 10 /* b */
        30: .line 319
            goto 34
        31: .line 322
      StackMap locals:
      StackMap stack:
            ldc 255.0
            fload 4 /* c */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 8 /* r */
        32: .line 323
            ldc 255.0
            fload 5 /* m */
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 9 /* g */
        33: .line 324
            ldc 255.0
            fload 6 /* x */
            fload 5 /* m */
            fadd
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 10 /* b */
        34: .line 328
      StackMap locals:
      StackMap stack:
            iload 8 /* r */
            iconst_0
            sipush 255
            invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
            istore 8 /* r */
        35: .line 329
            iload 9 /* g */
            iconst_0
            sipush 255
            invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
            istore 9 /* g */
        36: .line 330
            iload 10 /* b */
            iconst_0
            sipush 255
            invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
            istore 10 /* b */
        37: .line 332
            iload 8 /* r */
            iload 9 /* g */
            iload 10 /* b */
            invokestatic android.graphics.Color.rgb:(III)I
            ireturn
        end local 10 // int b
        end local 9 // int g
        end local 8 // int r
        end local 7 // int hueSegment
        end local 6 // float x
        end local 5 // float m
        end local 4 // float c
        end local 3 // float l
        end local 2 // float s
        end local 1 // float h
        end local 0 // float[] hsl
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   38     0         hsl  [F
            1   38     1           h  F
            2   38     2           s  F
            3   38     3           l  F
            4   38     4           c  F
            5   38     5           m  F
            6   38     6           x  F
            7   38     7  hueSegment  I
            8   38     8           r  I
            9   38     9           g  I
           10   38    10           b  I
    MethodParameters:
      Name  Flags
      hsl   

  public static int setAlphaComponent(int, int);
    descriptor: (II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // int color
        start local 1 // int alpha
         0: .line 341
            iload 1 /* alpha */
            iflt 1
            iload 1 /* alpha */
            sipush 255
            if_icmple 2
         1: .line 342
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "alpha must be between 0 and 255."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 344
      StackMap locals:
      StackMap stack:
            iload 0 /* color */
            ldc 16777215
            iand
            iload 1 /* alpha */
            bipush 24
            ishl
            ior
            ireturn
        end local 1 // int alpha
        end local 0 // int color
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  color  I
            0    3     1  alpha  I
    MethodParameters:
       Name  Flags
      color  
      alpha  

  public static void colorToLAB(int, double[]);
    descriptor: (I[D)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int color
        start local 1 // double[] outLab
         0: .line 354
            iload 0 /* color */
            invokestatic android.graphics.Color.red:(I)I
            iload 0 /* color */
            invokestatic android.graphics.Color.green:(I)I
            iload 0 /* color */
            invokestatic android.graphics.Color.blue:(I)I
            aload 1 /* outLab */
            invokestatic com.android.internal.graphics.ColorUtils.RGBToLAB:(III[D)V
         1: .line 355
            return
        end local 1 // double[] outLab
        end local 0 // int color
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0   color  I
            0    2     1  outLab  [D
    MethodParameters:
        Name  Flags
      color   
      outLab  

  public static void RGBToLAB(int, int, int, double[]);
    descriptor: (III[D)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // int r
        start local 1 // int g
        start local 2 // int b
        start local 3 // double[] outLab
         0: .line 375
            iload 0 /* r */
            iload 1 /* g */
            iload 2 /* b */
            aload 3 /* outLab */
            invokestatic com.android.internal.graphics.ColorUtils.RGBToXYZ:(III[D)V
         1: .line 377
            aload 3 /* outLab */
            iconst_0
            daload
            aload 3 /* outLab */
            iconst_1
            daload
            aload 3 /* outLab */
            iconst_2
            daload
            aload 3 /* outLab */
            invokestatic com.android.internal.graphics.ColorUtils.XYZToLAB:(DDD[D)V
         2: .line 379
            return
        end local 3 // double[] outLab
        end local 2 // int b
        end local 1 // int g
        end local 0 // int r
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0       r  I
            0    3     1       g  I
            0    3     2       b  I
            0    3     3  outLab  [D
    MethodParameters:
        Name  Flags
      r       
      g       
      b       
      outLab  

  public static void colorToXYZ(int, double[]);
    descriptor: (I[D)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int color
        start local 1 // double[] outXyz
         0: .line 397
            iload 0 /* color */
            invokestatic android.graphics.Color.red:(I)I
            iload 0 /* color */
            invokestatic android.graphics.Color.green:(I)I
            iload 0 /* color */
            invokestatic android.graphics.Color.blue:(I)I
            aload 1 /* outXyz */
            invokestatic com.android.internal.graphics.ColorUtils.RGBToXYZ:(III[D)V
         1: .line 398
            return
        end local 1 // double[] outXyz
        end local 0 // int color
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0   color  I
            0    2     1  outXyz  [D
    MethodParameters:
        Name  Flags
      color   
      outXyz  

  public static void RGBToXYZ(int, int, int, double[]);
    descriptor: (III[D)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=10, locals=10, args_size=4
        start local 0 // int r
        start local 1 // int g
        start local 2 // int b
        start local 3 // double[] outXyz
         0: .line 420
            aload 3 /* outXyz */
            arraylength
            iconst_3
            if_icmpeq 2
         1: .line 421
            new java.lang.IllegalArgumentException
            dup
            ldc "outXyz must have a length of 3."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 424
      StackMap locals:
      StackMap stack:
            iload 0 /* r */
            i2d
            ldc 255.0
            ddiv
            dstore 4 /* sr */
        start local 4 // double sr
         3: .line 425
            dload 4 /* sr */
            ldc 0.04045
            dcmpg
            ifge 4
            dload 4 /* sr */
            ldc 12.92
            ddiv
            goto 5
      StackMap locals: double
      StackMap stack:
         4: dload 4 /* sr */
            ldc 0.055
            dadd
            ldc 1.055
            ddiv
            ldc 2.4
            invokestatic java.lang.Math.pow:(DD)D
      StackMap locals:
      StackMap stack: double
         5: dstore 4 /* sr */
         6: .line 426
            iload 1 /* g */
            i2d
            ldc 255.0
            ddiv
            dstore 6 /* sg */
        start local 6 // double sg
         7: .line 427
            dload 6 /* sg */
            ldc 0.04045
            dcmpg
            ifge 8
            dload 6 /* sg */
            ldc 12.92
            ddiv
            goto 9
      StackMap locals: double
      StackMap stack:
         8: dload 6 /* sg */
            ldc 0.055
            dadd
            ldc 1.055
            ddiv
            ldc 2.4
            invokestatic java.lang.Math.pow:(DD)D
      StackMap locals:
      StackMap stack: double
         9: dstore 6 /* sg */
        10: .line 428
            iload 2 /* b */
            i2d
            ldc 255.0
            ddiv
            dstore 8 /* sb */
        start local 8 // double sb
        11: .line 429
            dload 8 /* sb */
            ldc 0.04045
            dcmpg
            ifge 12
            dload 8 /* sb */
            ldc 12.92
            ddiv
            goto 13
      StackMap locals: double
      StackMap stack:
        12: dload 8 /* sb */
            ldc 0.055
            dadd
            ldc 1.055
            ddiv
            ldc 2.4
            invokestatic java.lang.Math.pow:(DD)D
      StackMap locals:
      StackMap stack: double
        13: dstore 8 /* sb */
        14: .line 431
            aload 3 /* outXyz */
            iconst_0
            ldc 100.0
            dload 4 /* sr */
            ldc 0.4124
            dmul
            dload 6 /* sg */
            ldc 0.3576
            dmul
            dadd
            dload 8 /* sb */
            ldc 0.1805
            dmul
            dadd
            dmul
            dastore
        15: .line 432
            aload 3 /* outXyz */
            iconst_1
            ldc 100.0
            dload 4 /* sr */
            ldc 0.2126
            dmul
            dload 6 /* sg */
            ldc 0.7152
            dmul
            dadd
            dload 8 /* sb */
            ldc 0.0722
            dmul
            dadd
            dmul
            dastore
        16: .line 433
            aload 3 /* outXyz */
            iconst_2
            ldc 100.0
            dload 4 /* sr */
            ldc 0.0193
            dmul
            dload 6 /* sg */
            ldc 0.1192
            dmul
            dadd
            dload 8 /* sb */
            ldc 0.9505
            dmul
            dadd
            dmul
            dastore
        17: .line 434
            return
        end local 8 // double sb
        end local 6 // double sg
        end local 4 // double sr
        end local 3 // double[] outXyz
        end local 2 // int b
        end local 1 // int g
        end local 0 // int r
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   18     0       r  I
            0   18     1       g  I
            0   18     2       b  I
            0   18     3  outXyz  [D
            3   18     4      sr  D
            7   18     6      sg  D
           11   18     8      sb  D
    MethodParameters:
        Name  Flags
      r       
      g       
      b       
      outXyz  

  public static void XYZToLAB(double, double, double, double[]);
    descriptor: (DDD[D)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=7, args_size=4
        start local 0 // double x
        start local 2 // double y
        start local 4 // double z
        start local 6 // double[] outLab
         0: .line 457
            aload 6 /* outLab */
            arraylength
            iconst_3
            if_icmpeq 2
         1: .line 458
            new java.lang.IllegalArgumentException
            dup
            ldc "outLab must have a length of 3."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 460
      StackMap locals:
      StackMap stack:
            dload 0 /* x */
            ldc 95.047
            ddiv
            invokestatic com.android.internal.graphics.ColorUtils.pivotXyzComponent:(D)D
            dstore 0 /* x */
         3: .line 461
            dload 2 /* y */
            ldc 100.0
            ddiv
            invokestatic com.android.internal.graphics.ColorUtils.pivotXyzComponent:(D)D
            dstore 2 /* y */
         4: .line 462
            dload 4 /* z */
            ldc 108.883
            ddiv
            invokestatic com.android.internal.graphics.ColorUtils.pivotXyzComponent:(D)D
            dstore 4 /* z */
         5: .line 463
            aload 6 /* outLab */
            iconst_0
            dconst_0
            ldc 116.0
            dload 2 /* y */
            dmul
            ldc 16.0
            dsub
            invokestatic java.lang.Math.max:(DD)D
            dastore
         6: .line 464
            aload 6 /* outLab */
            iconst_1
            ldc 500.0
            dload 0 /* x */
            dload 2 /* y */
            dsub
            dmul
            dastore
         7: .line 465
            aload 6 /* outLab */
            iconst_2
            ldc 200.0
            dload 2 /* y */
            dload 4 /* z */
            dsub
            dmul
            dastore
         8: .line 466
            return
        end local 6 // double[] outLab
        end local 4 // double z
        end local 2 // double y
        end local 0 // double x
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0       x  D
            0    9     2       y  D
            0    9     4       z  D
            0    9     6  outLab  [D
    MethodParameters:
        Name  Flags
      x       
      y       
      z       
      outLab  

  public static void LABToXYZ(double, double, double, double[]);
    descriptor: (DDD[D)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=21, args_size=4
        start local 0 // double l
        start local 2 // double a
        start local 4 // double b
        start local 6 // double[] outXyz
         0: .line 489
            dload 0 /* l */
            ldc 16.0
            dadd
            ldc 116.0
            ddiv
            dstore 7 /* fy */
        start local 7 // double fy
         1: .line 490
            dload 2 /* a */
            ldc 500.0
            ddiv
            dload 7 /* fy */
            dadd
            dstore 9 /* fx */
        start local 9 // double fx
         2: .line 491
            dload 7 /* fy */
            dload 4 /* b */
            ldc 200.0
            ddiv
            dsub
            dstore 11 /* fz */
        start local 11 // double fz
         3: .line 493
            dload 9 /* fx */
            ldc 3.0
            invokestatic java.lang.Math.pow:(DD)D
            dstore 13 /* tmp */
        start local 13 // double tmp
         4: .line 494
            dload 13 /* tmp */
            ldc 0.008856
            dcmpl
            ifle 5
            dload 13 /* tmp */
            goto 6
      StackMap locals: double double double double[] double double double double
      StackMap stack:
         5: ldc 116.0
            dload 9 /* fx */
            dmul
            ldc 16.0
            dsub
            ldc 903.3
            ddiv
      StackMap locals:
      StackMap stack: double
         6: dstore 15 /* xr */
        start local 15 // double xr
         7: .line 495
            dload 0 /* l */
            ldc 7.9996247999999985
            dcmpl
            ifle 8
            dload 7 /* fy */
            ldc 3.0
            invokestatic java.lang.Math.pow:(DD)D
            goto 9
      StackMap locals: double
      StackMap stack:
         8: dload 0 /* l */
            ldc 903.3
            ddiv
      StackMap locals:
      StackMap stack: double
         9: dstore 17 /* yr */
        start local 17 // double yr
        10: .line 497
            dload 11 /* fz */
            ldc 3.0
            invokestatic java.lang.Math.pow:(DD)D
            dstore 13 /* tmp */
        11: .line 498
            dload 13 /* tmp */
            ldc 0.008856
            dcmpl
            ifle 12
            dload 13 /* tmp */
            goto 13
      StackMap locals: double
      StackMap stack:
        12: ldc 116.0
            dload 11 /* fz */
            dmul
            ldc 16.0
            dsub
            ldc 903.3
            ddiv
      StackMap locals:
      StackMap stack: double
        13: dstore 19 /* zr */
        start local 19 // double zr
        14: .line 500
            aload 6 /* outXyz */
            iconst_0
            dload 15 /* xr */
            ldc 95.047
            dmul
            dastore
        15: .line 501
            aload 6 /* outXyz */
            iconst_1
            dload 17 /* yr */
            ldc 100.0
            dmul
            dastore
        16: .line 502
            aload 6 /* outXyz */
            iconst_2
            dload 19 /* zr */
            ldc 108.883
            dmul
            dastore
        17: .line 503
            return
        end local 19 // double zr
        end local 17 // double yr
        end local 15 // double xr
        end local 13 // double tmp
        end local 11 // double fz
        end local 9 // double fx
        end local 7 // double fy
        end local 6 // double[] outXyz
        end local 4 // double b
        end local 2 // double a
        end local 0 // double l
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   18     0       l  D
            0   18     2       a  D
            0   18     4       b  D
            0   18     6  outXyz  [D
            1   18     7      fy  D
            2   18     9      fx  D
            3   18    11      fz  D
            4   18    13     tmp  D
            7   18    15      xr  D
           10   18    17      yr  D
           14   18    19      zr  D
    MethodParameters:
        Name  Flags
      l       final
      a       final
      b       final
      outXyz  

  public static int XYZToColor(double, double, double);
    descriptor: (DDD)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=12, args_size=3
        start local 0 // double x
        start local 2 // double y
        start local 4 // double z
         0: .line 520
            dload 0 /* x */
            ldc 3.2406
            dmul
            dload 2 /* y */
            ldc -1.5372
            dmul
            dadd
            dload 4 /* z */
            ldc -0.4986
            dmul
            dadd
            ldc 100.0
            ddiv
            dstore 6 /* r */
        start local 6 // double r
         1: .line 521
            dload 0 /* x */
            ldc -0.9689
            dmul
            dload 2 /* y */
            ldc 1.8758
            dmul
            dadd
            dload 4 /* z */
            ldc 0.0415
            dmul
            dadd
            ldc 100.0
            ddiv
            dstore 8 /* g */
        start local 8 // double g
         2: .line 522
            dload 0 /* x */
            ldc 0.0557
            dmul
            dload 2 /* y */
            ldc -0.204
            dmul
            dadd
            dload 4 /* z */
            ldc 1.057
            dmul
            dadd
            ldc 100.0
            ddiv
            dstore 10 /* b */
        start local 10 // double b
         3: .line 524
            dload 6 /* r */
            ldc 0.0031308
            dcmpl
            ifle 4
            ldc 1.055
            dload 6 /* r */
            ldc 0.4166666666666667
            invokestatic java.lang.Math.pow:(DD)D
            dmul
            ldc 0.055
            dsub
            goto 5
      StackMap locals: double double double
      StackMap stack:
         4: ldc 12.92
            dload 6 /* r */
            dmul
      StackMap locals:
      StackMap stack: double
         5: dstore 6 /* r */
         6: .line 525
            dload 8 /* g */
            ldc 0.0031308
            dcmpl
            ifle 7
            ldc 1.055
            dload 8 /* g */
            ldc 0.4166666666666667
            invokestatic java.lang.Math.pow:(DD)D
            dmul
            ldc 0.055
            dsub
            goto 8
      StackMap locals:
      StackMap stack:
         7: ldc 12.92
            dload 8 /* g */
            dmul
      StackMap locals:
      StackMap stack: double
         8: dstore 8 /* g */
         9: .line 526
            dload 10 /* b */
            ldc 0.0031308
            dcmpl
            ifle 10
            ldc 1.055
            dload 10 /* b */
            ldc 0.4166666666666667
            invokestatic java.lang.Math.pow:(DD)D
            dmul
            ldc 0.055
            dsub
            goto 11
      StackMap locals:
      StackMap stack:
        10: ldc 12.92
            dload 10 /* b */
            dmul
      StackMap locals:
      StackMap stack: double
        11: dstore 10 /* b */
        12: .line 529
            dload 6 /* r */
            ldc 255.0
            dmul
            invokestatic java.lang.Math.round:(D)J
            l2i
            iconst_0
            sipush 255
            invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
        13: .line 530
            dload 8 /* g */
            ldc 255.0
            dmul
            invokestatic java.lang.Math.round:(D)J
            l2i
            iconst_0
            sipush 255
            invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
        14: .line 531
            dload 10 /* b */
            ldc 255.0
            dmul
            invokestatic java.lang.Math.round:(D)J
            l2i
            iconst_0
            sipush 255
            invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
        15: .line 528
            invokestatic android.graphics.Color.rgb:(III)I
            ireturn
        end local 10 // double b
        end local 8 // double g
        end local 6 // double r
        end local 4 // double z
        end local 2 // double y
        end local 0 // double x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0     x  D
            0   16     2     y  D
            0   16     4     z  D
            1   16     6     r  D
            2   16     8     g  D
            3   16    10     b  D
    MethodParameters:
      Name  Flags
      x     
      y     
      z     

  public static int LABToColor(double, double, double);
    descriptor: (DDD)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=7, args_size=3
        start local 0 // double l
        start local 2 // double a
        start local 4 // double b
         0: .line 546
            invokestatic com.android.internal.graphics.ColorUtils.getTempDouble3Array:()[D
            astore 6 /* result */
        start local 6 // double[] result
         1: .line 547
            dload 0 /* l */
            dload 2 /* a */
            dload 4 /* b */
            aload 6 /* result */
            invokestatic com.android.internal.graphics.ColorUtils.LABToXYZ:(DDD[D)V
         2: .line 548
            aload 6 /* result */
            iconst_0
            daload
            aload 6 /* result */
            iconst_1
            daload
            aload 6 /* result */
            iconst_2
            daload
            invokestatic com.android.internal.graphics.ColorUtils.XYZToColor:(DDD)I
            ireturn
        end local 6 // double[] result
        end local 4 // double b
        end local 2 // double a
        end local 0 // double l
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0       l  D
            0    3     2       a  D
            0    3     4       b  D
            1    3     6  result  [D
    MethodParameters:
      Name  Flags
      l     final
      a     final
      b     final

  public static double distanceEuclidean(double[], double[]);
    descriptor: ([D[D)D
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // double[] labX
        start local 1 // double[] labY
         0: .line 555
            aload 0 /* labX */
            iconst_0
            daload
            aload 1 /* labY */
            iconst_0
            daload
            dsub
            ldc 2.0
            invokestatic java.lang.Math.pow:(DD)D
         1: .line 556
            aload 0 /* labX */
            iconst_1
            daload
            aload 1 /* labY */
            iconst_1
            daload
            dsub
            ldc 2.0
            invokestatic java.lang.Math.pow:(DD)D
         2: .line 555
            dadd
         3: .line 557
            aload 0 /* labX */
            iconst_2
            daload
            aload 1 /* labY */
            iconst_2
            daload
            dsub
            ldc 2.0
            invokestatic java.lang.Math.pow:(DD)D
         4: .line 555
            dadd
            invokestatic java.lang.Math.sqrt:(D)D
            dreturn
        end local 1 // double[] labY
        end local 0 // double[] labX
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  labX  [D
            0    5     1  labY  [D
    MethodParameters:
      Name  Flags
      labX  
      labY  

  private static float constrain(float, float, float);
    descriptor: (FFF)F
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // float amount
        start local 1 // float low
        start local 2 // float high
         0: .line 561
            fload 0 /* amount */
            fload 1 /* low */
            fcmpg
            ifge 1
            fload 1 /* low */
            goto 3
      StackMap locals:
      StackMap stack:
         1: fload 0 /* amount */
            fload 2 /* high */
            fcmpl
            ifle 2
            fload 2 /* high */
            goto 3
      StackMap locals:
      StackMap stack:
         2: fload 0 /* amount */
      StackMap locals:
      StackMap stack: float
         3: freturn
        end local 2 // float high
        end local 1 // float low
        end local 0 // float amount
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  amount  F
            0    4     1     low  F
            0    4     2    high  F
    MethodParameters:
        Name  Flags
      amount  
      low     
      high    

  private static int constrain(int, int, int);
    descriptor: (III)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // int amount
        start local 1 // int low
        start local 2 // int high
         0: .line 565
            iload 0 /* amount */
            iload 1 /* low */
            if_icmpge 1
            iload 1 /* low */
            goto 3
      StackMap locals:
      StackMap stack:
         1: iload 0 /* amount */
            iload 2 /* high */
            if_icmple 2
            iload 2 /* high */
            goto 3
      StackMap locals:
      StackMap stack:
         2: iload 0 /* amount */
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 2 // int high
        end local 1 // int low
        end local 0 // int amount
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  amount  I
            0    4     1     low  I
            0    4     2    high  I
    MethodParameters:
        Name  Flags
      amount  
      low     
      high    

  private static double pivotXyzComponent(double);
    descriptor: (D)D
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // double component
         0: .line 569
            dload 0 /* component */
            ldc 0.008856
            dcmpl
            ifle 2
         1: .line 570
            dload 0 /* component */
            ldc 0.3333333333333333
            invokestatic java.lang.Math.pow:(DD)D
            goto 3
         2: .line 571
      StackMap locals:
      StackMap stack:
            ldc 903.3
            dload 0 /* component */
            dmul
            ldc 16.0
            dadd
            ldc 116.0
            ddiv
         3: .line 569
      StackMap locals:
      StackMap stack: double
            dreturn
        end local 0 // double component
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0  component  D
    MethodParameters:
           Name  Flags
      component  

  public static int blendARGB(int, int, float);
    descriptor: (IIF)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // int color1
        start local 1 // int color2
        start local 2 // float ratio
         0: .line 587
            fconst_1
            fload 2 /* ratio */
            fsub
            fstore 3 /* inverseRatio */
        start local 3 // float inverseRatio
         1: .line 588
            iload 0 /* color1 */
            invokestatic android.graphics.Color.alpha:(I)I
            i2f
            fload 3 /* inverseRatio */
            fmul
            iload 1 /* color2 */
            invokestatic android.graphics.Color.alpha:(I)I
            i2f
            fload 2 /* ratio */
            fmul
            fadd
            fstore 4 /* a */
        start local 4 // float a
         2: .line 589
            iload 0 /* color1 */
            invokestatic android.graphics.Color.red:(I)I
            i2f
            fload 3 /* inverseRatio */
            fmul
            iload 1 /* color2 */
            invokestatic android.graphics.Color.red:(I)I
            i2f
            fload 2 /* ratio */
            fmul
            fadd
            fstore 5 /* r */
        start local 5 // float r
         3: .line 590
            iload 0 /* color1 */
            invokestatic android.graphics.Color.green:(I)I
            i2f
            fload 3 /* inverseRatio */
            fmul
            iload 1 /* color2 */
            invokestatic android.graphics.Color.green:(I)I
            i2f
            fload 2 /* ratio */
            fmul
            fadd
            fstore 6 /* g */
        start local 6 // float g
         4: .line 591
            iload 0 /* color1 */
            invokestatic android.graphics.Color.blue:(I)I
            i2f
            fload 3 /* inverseRatio */
            fmul
            iload 1 /* color2 */
            invokestatic android.graphics.Color.blue:(I)I
            i2f
            fload 2 /* ratio */
            fmul
            fadd
            fstore 7 /* b */
        start local 7 // float b
         5: .line 592
            fload 4 /* a */
            f2i
            fload 5 /* r */
            f2i
            fload 6 /* g */
            f2i
            fload 7 /* b */
            f2i
            invokestatic android.graphics.Color.argb:(IIII)I
            ireturn
        end local 7 // float b
        end local 6 // float g
        end local 5 // float r
        end local 4 // float a
        end local 3 // float inverseRatio
        end local 2 // float ratio
        end local 1 // int color2
        end local 0 // int color1
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0        color1  I
            0    6     1        color2  I
            0    6     2         ratio  F
            1    6     3  inverseRatio  F
            2    6     4             a  F
            3    6     5             r  F
            4    6     6             g  F
            5    6     7             b  F
    MethodParameters:
        Name  Flags
      color1  
      color2  
      ratio   

  public static void blendHSL(float[], float[], float, float[]);
    descriptor: ([F[FF[F)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // float[] hsl1
        start local 1 // float[] hsl2
        start local 2 // float ratio
        start local 3 // float[] outResult
         0: .line 609
            aload 3 /* outResult */
            arraylength
            iconst_3
            if_icmpeq 2
         1: .line 610
            new java.lang.IllegalArgumentException
            dup
            ldc "result must have a length of 3."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 612
      StackMap locals:
      StackMap stack:
            fconst_1
            fload 2 /* ratio */
            fsub
            fstore 4 /* inverseRatio */
        start local 4 // float inverseRatio
         3: .line 614
            aload 3 /* outResult */
            iconst_0
            aload 0 /* hsl1 */
            iconst_0
            faload
            aload 1 /* hsl2 */
            iconst_0
            faload
            fload 2 /* ratio */
            invokestatic com.android.internal.graphics.ColorUtils.circularInterpolate:(FFF)F
            fastore
         4: .line 615
            aload 3 /* outResult */
            iconst_1
            aload 0 /* hsl1 */
            iconst_1
            faload
            fload 4 /* inverseRatio */
            fmul
            aload 1 /* hsl2 */
            iconst_1
            faload
            fload 2 /* ratio */
            fmul
            fadd
            fastore
         5: .line 616
            aload 3 /* outResult */
            iconst_2
            aload 0 /* hsl1 */
            iconst_2
            faload
            fload 4 /* inverseRatio */
            fmul
            aload 1 /* hsl2 */
            iconst_2
            faload
            fload 2 /* ratio */
            fmul
            fadd
            fastore
         6: .line 617
            return
        end local 4 // float inverseRatio
        end local 3 // float[] outResult
        end local 2 // float ratio
        end local 1 // float[] hsl2
        end local 0 // float[] hsl1
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          hsl1  [F
            0    7     1          hsl2  [F
            0    7     2         ratio  F
            0    7     3     outResult  [F
            3    7     4  inverseRatio  F
    MethodParameters:
           Name  Flags
      hsl1       
      hsl2       
      ratio      
      outResult  

  public static void blendLAB(double[], double[], double, double[]);
    descriptor: ([D[DD[D)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=7, args_size=4
        start local 0 // double[] lab1
        start local 1 // double[] lab2
        start local 2 // double ratio
        start local 4 // double[] outResult
         0: .line 632
            aload 4 /* outResult */
            arraylength
            iconst_3
            if_icmpeq 2
         1: .line 633
            new java.lang.IllegalArgumentException
            dup
            ldc "outResult must have a length of 3."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 635
      StackMap locals:
      StackMap stack:
            dconst_1
            dload 2 /* ratio */
            dsub
            dstore 5 /* inverseRatio */
        start local 5 // double inverseRatio
         3: .line 636
            aload 4 /* outResult */
            iconst_0
            aload 0 /* lab1 */
            iconst_0
            daload
            dload 5 /* inverseRatio */
            dmul
            aload 1 /* lab2 */
            iconst_0
            daload
            dload 2 /* ratio */
            dmul
            dadd
            dastore
         4: .line 637
            aload 4 /* outResult */
            iconst_1
            aload 0 /* lab1 */
            iconst_1
            daload
            dload 5 /* inverseRatio */
            dmul
            aload 1 /* lab2 */
            iconst_1
            daload
            dload 2 /* ratio */
            dmul
            dadd
            dastore
         5: .line 638
            aload 4 /* outResult */
            iconst_2
            aload 0 /* lab1 */
            iconst_2
            daload
            dload 5 /* inverseRatio */
            dmul
            aload 1 /* lab2 */
            iconst_2
            daload
            dload 2 /* ratio */
            dmul
            dadd
            dastore
         6: .line 639
            return
        end local 5 // double inverseRatio
        end local 4 // double[] outResult
        end local 2 // double ratio
        end local 1 // double[] lab2
        end local 0 // double[] lab1
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          lab1  [D
            0    7     1          lab2  [D
            0    7     2         ratio  D
            0    7     4     outResult  [D
            3    7     5  inverseRatio  D
    MethodParameters:
           Name  Flags
      lab1       
      lab2       
      ratio      
      outResult  

  static float circularInterpolate(float, float, float);
    descriptor: (FFF)F
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // float a
        start local 1 // float b
        start local 2 // float f
         0: .line 642
            fload 1 /* b */
            fload 0 /* a */
            fsub
            invokestatic java.lang.Math.abs:(F)F
            ldc 180.0
            fcmpl
            ifle 5
         1: .line 643
            fload 1 /* b */
            fload 0 /* a */
            fcmpl
            ifle 4
         2: .line 644
            fload 0 /* a */
            ldc 360.0
            fadd
            fstore 0 /* a */
         3: .line 645
            goto 5
         4: .line 646
      StackMap locals:
      StackMap stack:
            fload 1 /* b */
            ldc 360.0
            fadd
            fstore 1 /* b */
         5: .line 649
      StackMap locals:
      StackMap stack:
            fload 0 /* a */
            fload 1 /* b */
            fload 0 /* a */
            fsub
            fload 2 /* f */
            fmul
            fadd
            ldc 360.0
            frem
            freturn
        end local 2 // float f
        end local 1 // float b
        end local 0 // float a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0     a  F
            0    6     1     b  F
            0    6     2     f  F
    MethodParameters:
      Name  Flags
      a     
      b     
      f     

  private static double[] getTempDouble3Array();
    descriptor: ()[D
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 653
            getstatic com.android.internal.graphics.ColorUtils.TEMP_ARRAY:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast double[]
            astore 0 /* result */
        start local 0 // double[] result
         1: .line 654
            aload 0 /* result */
            ifnonnull 4
         2: .line 655
            iconst_3
            newarray 7
            astore 0 /* result */
         3: .line 656
            getstatic com.android.internal.graphics.ColorUtils.TEMP_ARRAY:Ljava/lang/ThreadLocal;
            aload 0 /* result */
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         4: .line 658
      StackMap locals: double[]
      StackMap stack:
            aload 0 /* result */
            areturn
        end local 0 // double[] result
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            1    5     0  result  [D

  private static double lambda$0(int, int, int, int);
    descriptor: (IIII)D
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=5, args_size=4
        start local 1 // int fg
        start local 2 // int bg
        start local 3 // int alpha
         0: .line 125
            iload 0
            iload 2 /* bg */
            iload 3 /* alpha */
            i2f
            ldc 255.0
            fdiv
            invokestatic com.android.internal.graphics.ColorUtils.blendARGB:(IIF)I
            istore 4 /* testBackground */
        start local 4 // int testBackground
         1: .line 128
            iload 4 /* testBackground */
            sipush 255
            invokestatic com.android.internal.graphics.ColorUtils.setAlphaComponent:(II)I
            istore 4 /* testBackground */
         2: .line 129
            iload 1 /* fg */
            iload 4 /* testBackground */
            invokestatic com.android.internal.graphics.ColorUtils.calculateContrast:(II)D
            dreturn
        end local 4 // int testBackground
        end local 3 // int alpha
        end local 2 // int bg
        end local 1 // int fg
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     1              fg  I
            0    3     2              bg  I
            0    3     3           alpha  I
            1    3     4  testBackground  I

  private static double lambda$1(int, int, int);
    descriptor: (III)D
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // int fg
        start local 1 // int bg
        start local 2 // int alpha
         0: .line 151
            iload 0 /* fg */
            iload 2 /* alpha */
            invokestatic com.android.internal.graphics.ColorUtils.setAlphaComponent:(II)I
            istore 3 /* testForeground */
        start local 3 // int testForeground
         1: .line 152
            iload 3 /* testForeground */
            iload 1 /* bg */
            invokestatic com.android.internal.graphics.ColorUtils.calculateContrast:(II)D
            dreturn
        end local 3 // int testForeground
        end local 2 // int alpha
        end local 1 // int bg
        end local 0 // int fg
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0              fg  I
            0    2     1              bg  I
            0    2     2           alpha  I
            1    2     3  testForeground  I
}
SourceFile: "ColorUtils.java"
NestMembers:
  com.android.internal.graphics.ColorUtils$ContrastCalculator
InnerClasses:
  private abstract ContrastCalculator = com.android.internal.graphics.ColorUtils$ContrastCalculator of com.android.internal.graphics.ColorUtils
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles