public abstract class android.util.Spline
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: android.util.Spline
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.util.Spline this
         0: .line 23
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // android.util.Spline this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/util/Spline;

  public abstract float interpolate(float);
    descriptor: (F)F
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      x     

  public static android.util.Spline createSpline(float[], float[]);
    descriptor: ([F[F)Landroid/util/Spline;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // float[] x
        start local 1 // float[] y
         0: .line 41
            aload 0 /* x */
            invokestatic android.util.Spline.isStrictlyIncreasing:([F)Z
            ifne 2
         1: .line 42
            new java.lang.IllegalArgumentException
            dup
            ldc "The control points must all have strictly increasing X values."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 46
      StackMap locals:
      StackMap stack:
            aload 1 /* y */
            invokestatic android.util.Spline.isMonotonic:([F)Z
            ifeq 4
         3: .line 47
            aload 0 /* x */
            aload 1 /* y */
            invokestatic android.util.Spline.createMonotoneCubicSpline:([F[F)Landroid/util/Spline;
            areturn
         4: .line 49
      StackMap locals:
      StackMap stack:
            aload 0 /* x */
            aload 1 /* y */
            invokestatic android.util.Spline.createLinearSpline:([F[F)Landroid/util/Spline;
            areturn
        end local 1 // float[] y
        end local 0 // float[] x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     x  [F
            0    5     1     y  [F
    MethodParameters:
      Name  Flags
      x     
      y     

  public static android.util.Spline createMonotoneCubicSpline(float[], float[]);
    descriptor: ([F[F)Landroid/util/Spline;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // float[] x
        start local 1 // float[] y
         0: .line 72
            new android.util.Spline$MonotoneCubicSpline
            dup
            aload 0 /* x */
            aload 1 /* y */
            invokespecial android.util.Spline$MonotoneCubicSpline.<init>:([F[F)V
            areturn
        end local 1 // float[] y
        end local 0 // float[] x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  [F
            0    1     1     y  [F
    MethodParameters:
      Name  Flags
      x     
      y     

  public static android.util.Spline createLinearSpline(float[], float[]);
    descriptor: ([F[F)Landroid/util/Spline;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // float[] x
        start local 1 // float[] y
         0: .line 91
            new android.util.Spline$LinearSpline
            dup
            aload 0 /* x */
            aload 1 /* y */
            invokespecial android.util.Spline$LinearSpline.<init>:([F[F)V
            areturn
        end local 1 // float[] y
        end local 0 // float[] x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  [F
            0    1     1     y  [F
    MethodParameters:
      Name  Flags
      x     
      y     

  private static boolean isStrictlyIncreasing(float[]);
    descriptor: ([F)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // float[] x
         0: .line 95
            aload 0 /* x */
            ifnull 1
            aload 0 /* x */
            arraylength
            iconst_2
            if_icmpge 2
         1: .line 96
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "There must be at least two control points."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 98
      StackMap locals:
      StackMap stack:
            aload 0 /* x */
            iconst_0
            faload
            fstore 1 /* prev */
        start local 1 // float prev
         3: .line 99
            iconst_1
            istore 2 /* i */
        start local 2 // int i
         4: goto 10
         5: .line 100
      StackMap locals: float int
      StackMap stack:
            aload 0 /* x */
            iload 2 /* i */
            faload
            fstore 3 /* curr */
        start local 3 // float curr
         6: .line 101
            fload 3 /* curr */
            fload 1 /* prev */
            fcmpg
            ifgt 8
         7: .line 102
            iconst_0
            ireturn
         8: .line 104
      StackMap locals: float
      StackMap stack:
            fload 3 /* curr */
            fstore 1 /* prev */
        end local 3 // float curr
         9: .line 99
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 2 /* i */
            aload 0 /* x */
            arraylength
            if_icmplt 5
        end local 2 // int i
        11: .line 106
            iconst_1
            ireturn
        end local 1 // float prev
        end local 0 // float[] x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0     x  [F
            3   12     1  prev  F
            4   11     2     i  I
            6    9     3  curr  F
    MethodParameters:
      Name  Flags
      x     

  private static boolean isMonotonic(float[]);
    descriptor: ([F)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // float[] x
         0: .line 110
            aload 0 /* x */
            ifnull 1
            aload 0 /* x */
            arraylength
            iconst_2
            if_icmpge 2
         1: .line 111
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "There must be at least two control points."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 113
      StackMap locals:
      StackMap stack:
            aload 0 /* x */
            iconst_0
            faload
            fstore 1 /* prev */
        start local 1 // float prev
         3: .line 114
            iconst_1
            istore 2 /* i */
        start local 2 // int i
         4: goto 10
         5: .line 115
      StackMap locals: float int
      StackMap stack:
            aload 0 /* x */
            iload 2 /* i */
            faload
            fstore 3 /* curr */
        start local 3 // float curr
         6: .line 116
            fload 3 /* curr */
            fload 1 /* prev */
            fcmpg
            ifge 8
         7: .line 117
            iconst_0
            ireturn
         8: .line 119
      StackMap locals: float
      StackMap stack:
            fload 3 /* curr */
            fstore 1 /* prev */
        end local 3 // float curr
         9: .line 114
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 2 /* i */
            aload 0 /* x */
            arraylength
            if_icmplt 5
        end local 2 // int i
        11: .line 121
            iconst_1
            ireturn
        end local 1 // float prev
        end local 0 // float[] x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0     x  [F
            3   12     1  prev  F
            4   11     2     i  I
            6    9     3  curr  F
    MethodParameters:
      Name  Flags
      x     
}
SourceFile: "Spline.java"
NestMembers:
  android.util.Spline$LinearSpline  android.util.Spline$MonotoneCubicSpline
InnerClasses:
  public LinearSpline = android.util.Spline$LinearSpline of android.util.Spline
  public MonotoneCubicSpline = android.util.Spline$MonotoneCubicSpline of android.util.Spline