public abstract class sun.awt.CustomCursor extends java.awt.Cursor
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: sun.awt.CustomCursor
  super_class: java.awt.Cursor
{
  protected java.awt.Image image;
    descriptor: Ljava/awt/Image;
    flags: (0x0004) ACC_PROTECTED

  public void <init>(java.awt.Image, java.awt.Point, java.lang.String);
    descriptor: (Ljava/awt/Image;Ljava/awt/Point;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=13, args_size=4
        start local 0 // sun.awt.CustomCursor this
        start local 1 // java.awt.Image cursor
        start local 2 // java.awt.Point hotSpot
        start local 3 // java.lang.String name
         0: .line 42
            aload 0 /* this */
            aload 3 /* name */
            invokespecial java.awt.Cursor.<init>:(Ljava/lang/String;)V
         1: .line 43
            aload 0 /* this */
            aload 1 /* cursor */
            putfield sun.awt.CustomCursor.image:Ljava/awt/Image;
         2: .line 44
            invokestatic java.awt.Toolkit.getDefaultToolkit:()Ljava/awt/Toolkit;
            astore 4 /* toolkit */
        start local 4 // java.awt.Toolkit toolkit
         3: .line 47
            new java.awt.Canvas
            dup
            invokespecial java.awt.Canvas.<init>:()V
            astore 5 /* c */
        start local 5 // java.awt.Component c
         4: .line 48
            new java.awt.MediaTracker
            dup
            aload 5 /* c */
            invokespecial java.awt.MediaTracker.<init>:(Ljava/awt/Component;)V
            astore 6 /* tracker */
        start local 6 // java.awt.MediaTracker tracker
         5: .line 49
            aload 6 /* tracker */
            aload 1 /* cursor */
            iconst_0
            invokevirtual java.awt.MediaTracker.addImage:(Ljava/awt/Image;I)V
         6: .line 51
            aload 6 /* tracker */
            invokevirtual java.awt.MediaTracker.waitForAll:()V
         7: .line 52
            goto 9
      StackMap locals: sun.awt.CustomCursor java.awt.Image java.awt.Point java.lang.String java.awt.Toolkit java.awt.Component java.awt.MediaTracker
      StackMap stack: java.lang.InterruptedException
         8: pop
         9: .line 54
      StackMap locals:
      StackMap stack:
            aload 1 /* cursor */
            aload 5 /* c */
            invokevirtual java.awt.Image.getWidth:(Ljava/awt/image/ImageObserver;)I
            istore 7 /* width */
        start local 7 // int width
        10: .line 55
            aload 1 /* cursor */
            aload 5 /* c */
            invokevirtual java.awt.Image.getHeight:(Ljava/awt/image/ImageObserver;)I
            istore 8 /* height */
        start local 8 // int height
        11: .line 62
            aload 6 /* tracker */
            invokevirtual java.awt.MediaTracker.isErrorAny:()Z
            ifne 12
            iload 7 /* width */
            iflt 12
            iload 8 /* height */
            ifge 13
        12: .line 63
      StackMap locals: int int
      StackMap stack:
            aload 2 /* hotSpot */
            aload 2 /* hotSpot */
            iconst_0
            dup_x1
            putfield java.awt.Point.y:I
            putfield java.awt.Point.x:I
        13: .line 67
      StackMap locals:
      StackMap stack:
            aload 4 /* toolkit */
            iload 7 /* width */
            iload 8 /* height */
            invokevirtual java.awt.Toolkit.getBestCursorSize:(II)Ljava/awt/Dimension;
            astore 9 /* nativeSize */
        start local 9 // java.awt.Dimension nativeSize
        14: .line 68
            aload 9 /* nativeSize */
            getfield java.awt.Dimension.width:I
            iload 7 /* width */
            if_icmpne 15
            aload 9 /* nativeSize */
            getfield java.awt.Dimension.height:I
            iload 8 /* height */
            if_icmpeq 22
        15: .line 69
      StackMap locals: java.awt.Dimension
      StackMap stack:
            aload 9 /* nativeSize */
            getfield java.awt.Dimension.width:I
            ifeq 22
            aload 9 /* nativeSize */
            getfield java.awt.Dimension.height:I
            ifeq 22
        16: .line 70
            aload 1 /* cursor */
            aload 9 /* nativeSize */
            getfield java.awt.Dimension.width:I
        17: .line 71
            aload 9 /* nativeSize */
            getfield java.awt.Dimension.height:I
        18: .line 72
            iconst_1
        19: .line 70
            invokevirtual java.awt.Image.getScaledInstance:(III)Ljava/awt/Image;
            astore 1 /* cursor */
        20: .line 73
            aload 9 /* nativeSize */
            getfield java.awt.Dimension.width:I
            istore 7 /* width */
        21: .line 74
            aload 9 /* nativeSize */
            getfield java.awt.Dimension.height:I
            istore 8 /* height */
        22: .line 78
      StackMap locals:
      StackMap stack:
            aload 2 /* hotSpot */
            getfield java.awt.Point.x:I
            iload 7 /* width */
            if_icmpge 23
            aload 2 /* hotSpot */
            getfield java.awt.Point.y:I
            iload 8 /* height */
            if_icmpge 23
            aload 2 /* hotSpot */
            getfield java.awt.Point.x:I
            iflt 23
            aload 2 /* hotSpot */
            getfield java.awt.Point.y:I
            ifge 24
        23: .line 79
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            ldc "invalid hotSpot"
            invokespecial java.lang.IndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
            athrow
        24: .line 89
      StackMap locals:
      StackMap stack:
            iload 7 /* width */
            iload 8 /* height */
            imul
            newarray 10
            astore 10 /* pixels */
        start local 10 // int[] pixels
        25: .line 90
            aload 1 /* cursor */
            invokevirtual java.awt.Image.getSource:()Ljava/awt/image/ImageProducer;
            astore 11 /* ip */
        start local 11 // java.awt.image.ImageProducer ip
        26: .line 91
            new java.awt.image.PixelGrabber
            dup
            aload 11 /* ip */
            iconst_0
            iconst_0
            iload 7 /* width */
            iload 8 /* height */
        27: .line 92
            aload 10 /* pixels */
            iconst_0
            iload 7 /* width */
        28: .line 91
            invokespecial java.awt.image.PixelGrabber.<init>:(Ljava/awt/image/ImageProducer;IIII[III)V
            astore 12 /* pg */
        start local 12 // java.awt.image.PixelGrabber pg
        29: .line 94
            aload 12 /* pg */
            invokevirtual java.awt.image.PixelGrabber.grabPixels:()Z
            pop
        30: .line 95
            goto 32
      StackMap locals: sun.awt.CustomCursor java.awt.Image java.awt.Point java.lang.String java.awt.Toolkit java.awt.Component java.awt.MediaTracker int int java.awt.Dimension int[] java.awt.image.ImageProducer java.awt.image.PixelGrabber
      StackMap stack: java.lang.InterruptedException
        31: pop
        32: .line 98
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.awt.CustomCursor.image:Ljava/awt/Image;
            aload 10 /* pixels */
            iload 7 /* width */
            iload 8 /* height */
            aload 2 /* hotSpot */
            getfield java.awt.Point.x:I
            aload 2 /* hotSpot */
            getfield java.awt.Point.y:I
            invokevirtual sun.awt.CustomCursor.createNativeCursor:(Ljava/awt/Image;[IIIII)V
        33: .line 99
            return
        end local 12 // java.awt.image.PixelGrabber pg
        end local 11 // java.awt.image.ImageProducer ip
        end local 10 // int[] pixels
        end local 9 // java.awt.Dimension nativeSize
        end local 8 // int height
        end local 7 // int width
        end local 6 // java.awt.MediaTracker tracker
        end local 5 // java.awt.Component c
        end local 4 // java.awt.Toolkit toolkit
        end local 3 // java.lang.String name
        end local 2 // java.awt.Point hotSpot
        end local 1 // java.awt.Image cursor
        end local 0 // sun.awt.CustomCursor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   34     0        this  Lsun/awt/CustomCursor;
            0   34     1      cursor  Ljava/awt/Image;
            0   34     2     hotSpot  Ljava/awt/Point;
            0   34     3        name  Ljava/lang/String;
            3   34     4     toolkit  Ljava/awt/Toolkit;
            4   34     5           c  Ljava/awt/Component;
            5   34     6     tracker  Ljava/awt/MediaTracker;
           10   34     7       width  I
           11   34     8      height  I
           14   34     9  nativeSize  Ljava/awt/Dimension;
           25   34    10      pixels  [I
           26   34    11          ip  Ljava/awt/image/ImageProducer;
           29   34    12          pg  Ljava/awt/image/PixelGrabber;
      Exception table:
        from    to  target  type
           6     7       8  Class java.lang.InterruptedException
          29    30      31  Class java.lang.InterruptedException
    Exceptions:
      throws java.lang.IndexOutOfBoundsException
    MethodParameters:
         Name  Flags
      cursor   
      hotSpot  
      name     

  protected abstract void createNativeCursor(java.awt.Image, int[], int, int, int, int);
    descriptor: (Ljava/awt/Image;[IIIII)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      im        
      pixels    
      width     
      height    
      xHotSpot  
      yHotSpot  
}
SourceFile: "CustomCursor.java"