public class com.sun.javafx.sg.prism.NGExternalNode extends com.sun.javafx.sg.prism.NGNode
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.javafx.sg.prism.NGExternalNode
  super_class: com.sun.javafx.sg.prism.NGNode
{
  private com.sun.prism.Texture dsttexture;
    descriptor: Lcom/sun/prism/Texture;
    flags: (0x0002) ACC_PRIVATE

  private com.sun.javafx.sg.prism.NGExternalNode$BufferData bufferData;
    descriptor: Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
    flags: (0x0002) ACC_PRIVATE

  private final java.util.concurrent.atomic.AtomicReference<com.sun.javafx.sg.prism.NGExternalNode$RenderData> renderData;
    descriptor: Ljava/util/concurrent/atomic/AtomicReference;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicReference<Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;>;

  private com.sun.javafx.sg.prism.NGExternalNode$RenderData rd;
    descriptor: Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
    flags: (0x0002) ACC_PRIVATE

  private volatile java.util.concurrent.locks.ReentrantLock bufferLock;
    descriptor: Ljava/util/concurrent/locks/ReentrantLock;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.sun.javafx.sg.prism.NGExternalNode this
         0: .line 37
            aload 0 /* this */
            invokespecial com.sun.javafx.sg.prism.NGNode.<init>:()V
         1: .line 42
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicReference
            dup
            aconst_null
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
            putfield com.sun.javafx.sg.prism.NGExternalNode.renderData:Ljava/util/concurrent/atomic/AtomicReference;
         2: .line 37
            return
        end local 0 // com.sun.javafx.sg.prism.NGExternalNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/javafx/sg/prism/NGExternalNode;

  protected void renderContent(com.sun.prism.Graphics);
    descriptor: (Lcom/sun/prism/Graphics;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=11, locals=9, args_size=2
        start local 0 // com.sun.javafx.sg.prism.NGExternalNode this
        start local 1 // com.sun.prism.Graphics g
         0: .line 50
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.renderData:Ljava/util/concurrent/atomic/AtomicReference;
            aconst_null
            invokevirtual java.util.concurrent.atomic.AtomicReference.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.sun.javafx.sg.prism.NGExternalNode$RenderData
            astore 2 /* curRenderData */
        start local 2 // com.sun.javafx.sg.prism.NGExternalNode$RenderData curRenderData
         1: .line 52
            aload 2 /* curRenderData */
            ifnull 3
         2: .line 53
            aload 0 /* this */
            aload 2 /* curRenderData */
            putfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
         3: .line 55
      StackMap locals: com.sun.javafx.sg.prism.NGExternalNode$RenderData
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            ifnonnull 4
            return
         4: .line 57
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.srcbounds:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.x:I
            istore 3 /* x */
        start local 3 // int x
         5: .line 58
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.srcbounds:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.y:I
            istore 4 /* y */
        start local 4 // int y
         6: .line 59
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.srcbounds:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.width:I
            istore 5 /* w */
        start local 5 // int w
         7: .line 60
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.srcbounds:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.height:I
            istore 6 /* h */
        start local 6 // int h
         8: .line 62
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
            ifnull 18
         9: .line 64
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
            invokeinterface com.sun.prism.Texture.lock:()V
        10: .line 66
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
            invokeinterface com.sun.prism.Texture.isSurfaceLost:()Z
            ifne 13
        11: .line 67
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
            invokeinterface com.sun.prism.Texture.getContentWidth:()I
            iload 5 /* w */
            if_icmpne 13
        12: .line 68
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
            invokeinterface com.sun.prism.Texture.getContentHeight:()I
            iload 6 /* h */
            if_icmpeq 19
        13: .line 70
      StackMap locals: com.sun.javafx.sg.prism.NGExternalNode com.sun.prism.Graphics com.sun.javafx.sg.prism.NGExternalNode$RenderData int int int int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
            invokeinterface com.sun.prism.Texture.unlock:()V
        14: .line 71
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
            invokeinterface com.sun.prism.Texture.dispose:()V
        15: .line 72
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            iconst_0
            iconst_0
            iload 5 /* w */
            iload 6 /* h */
            invokevirtual com.sun.javafx.sg.prism.NGExternalNode$RenderData.copyAddDirtyRect:(IIII)Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            putfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
        16: .line 73
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* g */
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            invokevirtual com.sun.javafx.sg.prism.NGExternalNode.createTexture:(Lcom/sun/prism/Graphics;Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;)Lcom/sun/prism/Texture;
            putfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
        17: .line 75
            goto 19
        18: .line 76
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* g */
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            invokevirtual com.sun.javafx.sg.prism.NGExternalNode.createTexture:(Lcom/sun/prism/Graphics;Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;)Lcom/sun/prism/Texture;
            putfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
        19: .line 78
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
            ifnonnull 21
        20: .line 79
            return
        21: .line 82
      StackMap locals:
      StackMap stack:
            aload 2 /* curRenderData */
            ifnull 38
        22: .line 83
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.bufferLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
        23: .line 85
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.srcbuffer:Ljava/nio/Buffer;
        24: .line 86
            getstatic com.sun.prism.PixelFormat.INT_ARGB_PRE:Lcom/sun/prism/PixelFormat;
        25: .line 87
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.dirtyRect:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.x:I
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.dirtyRect:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.y:I
        26: .line 88
            iload 3 /* x */
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.dirtyRect:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.x:I
            iadd
            iload 4 /* y */
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.dirtyRect:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.y:I
            iadd
        27: .line 89
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.dirtyRect:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.width:I
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.dirtyRect:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.height:I
        28: .line 90
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.linestride:I
            iconst_4
            imul
        29: .line 91
            iconst_0
        30: .line 85
            invokeinterface com.sun.prism.Texture.update:(Ljava/nio/Buffer;Lcom/sun/prism/PixelFormat;IIIIIIIZ)V
        31: .line 92
            goto 35
      StackMap locals:
      StackMap stack: java.lang.Throwable
        32: astore 7
        33: .line 93
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.bufferLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        34: .line 94
            aload 7
            athrow
        35: .line 93
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.bufferLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        36: .line 95
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.clearTarget:Z
            ifeq 38
        37: .line 96
            aload 1 /* g */
            fconst_0
            fconst_0
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.usrwidth:F
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.usrheight:F
            invokeinterface com.sun.prism.Graphics.clearQuad:(FFFF)V
        38: .line 100
      StackMap locals:
      StackMap stack:
            aload 1 /* g */
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
        39: .line 101
            fconst_0
            fconst_0
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.usrwidth:F
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.rd:Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.usrheight:F
        40: .line 102
            fconst_0
            fconst_0
            iload 5 /* w */
            i2f
            iload 6 /* h */
            i2f
        41: .line 100
            invokeinterface com.sun.prism.Graphics.drawTexture:(Lcom/sun/prism/Texture;FFFFFFFF)V
        42: .line 103
            goto 46
      StackMap locals:
      StackMap stack: java.lang.Throwable
        43: astore 8
        44: .line 104
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
            invokeinterface com.sun.prism.Texture.unlock:()V
        45: .line 105
            aload 8
            athrow
        46: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.dsttexture:Lcom/sun/prism/Texture;
            invokeinterface com.sun.prism.Texture.unlock:()V
        47: .line 106
            return
        end local 6 // int h
        end local 5 // int w
        end local 4 // int y
        end local 3 // int x
        end local 2 // com.sun.javafx.sg.prism.NGExternalNode$RenderData curRenderData
        end local 1 // com.sun.prism.Graphics g
        end local 0 // com.sun.javafx.sg.prism.NGExternalNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   48     0           this  Lcom/sun/javafx/sg/prism/NGExternalNode;
            0   48     1              g  Lcom/sun/prism/Graphics;
            1   48     2  curRenderData  Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            5   48     3              x  I
            6   48     4              y  I
            7   48     5              w  I
            8   48     6              h  I
      Exception table:
        from    to  target  type
          23    32      32  any
          21    43      43  any
    MethodParameters:
      Name  Flags
      g     

  private com.sun.prism.Texture createTexture(com.sun.prism.Graphics, com.sun.javafx.sg.prism.NGExternalNode$RenderData);
    descriptor: (Lcom/sun/prism/Graphics;Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;)Lcom/sun/prism/Texture;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // com.sun.javafx.sg.prism.NGExternalNode this
        start local 1 // com.sun.prism.Graphics g
        start local 2 // com.sun.javafx.sg.prism.NGExternalNode$RenderData rd
         0: .line 109
            aload 1 /* g */
            invokeinterface com.sun.prism.Graphics.getResourceFactory:()Lcom/sun/prism/ResourceFactory;
            astore 3 /* factory */
        start local 3 // com.sun.prism.ResourceFactory factory
         1: .line 110
            aload 3 /* factory */
            invokeinterface com.sun.prism.ResourceFactory.isDeviceReady:()Z
            ifne 3
         2: .line 111
            aconst_null
            areturn
         3: .line 113
      StackMap locals: com.sun.prism.ResourceFactory
      StackMap stack:
            aload 3 /* factory */
            getstatic com.sun.prism.PixelFormat.INT_ARGB_PRE:Lcom/sun/prism/PixelFormat;
         4: .line 114
            getstatic com.sun.prism.Texture$Usage.DYNAMIC:Lcom/sun/prism/Texture$Usage;
         5: .line 115
            getstatic com.sun.prism.Texture$WrapMode.CLAMP_NOT_NEEDED:Lcom/sun/prism/Texture$WrapMode;
         6: .line 116
            aload 2 /* rd */
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.srcbounds:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.width:I
            aload 2 /* rd */
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.bdata:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.srcbounds:Lcom/sun/javafx/geom/Rectangle;
            getfield com.sun.javafx.geom.Rectangle.height:I
         7: .line 113
            invokeinterface com.sun.prism.ResourceFactory.createTexture:(Lcom/sun/prism/PixelFormat;Lcom/sun/prism/Texture$Usage;Lcom/sun/prism/Texture$WrapMode;II)Lcom/sun/prism/Texture;
            astore 4 /* txt */
        start local 4 // com.sun.prism.Texture txt
         8: .line 117
            aload 4 /* txt */
            ifnull 11
         9: .line 118
            aload 4 /* txt */
            invokeinterface com.sun.prism.Texture.contentsUseful:()V
        10: .line 119
            goto 12
        11: .line 120
      StackMap locals: com.sun.prism.Texture
      StackMap stack:
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "NGExternalNode: failed to create a texture"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        12: .line 122
      StackMap locals:
      StackMap stack:
            aload 4 /* txt */
            areturn
        end local 4 // com.sun.prism.Texture txt
        end local 3 // com.sun.prism.ResourceFactory factory
        end local 2 // com.sun.javafx.sg.prism.NGExternalNode$RenderData rd
        end local 1 // com.sun.prism.Graphics g
        end local 0 // com.sun.javafx.sg.prism.NGExternalNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0     this  Lcom/sun/javafx/sg/prism/NGExternalNode;
            0   13     1        g  Lcom/sun/prism/Graphics;
            0   13     2       rd  Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            1   13     3  factory  Lcom/sun/prism/ResourceFactory;
            8   13     4      txt  Lcom/sun/prism/Texture;
    MethodParameters:
      Name  Flags
      g     
      rd    

  public void setLock(java.util.concurrent.locks.ReentrantLock);
    descriptor: (Ljava/util/concurrent/locks/ReentrantLock;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.javafx.sg.prism.NGExternalNode this
        start local 1 // java.util.concurrent.locks.ReentrantLock lock
         0: .line 126
            aload 0 /* this */
            aload 1 /* lock */
            putfield com.sun.javafx.sg.prism.NGExternalNode.bufferLock:Ljava/util/concurrent/locks/ReentrantLock;
         1: .line 127
            return
        end local 1 // java.util.concurrent.locks.ReentrantLock lock
        end local 0 // com.sun.javafx.sg.prism.NGExternalNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/javafx/sg/prism/NGExternalNode;
            0    2     1  lock  Ljava/util/concurrent/locks/ReentrantLock;
    MethodParameters:
      Name  Flags
      lock  

  public void setImageBuffer(java.nio.Buffer, int, int, int, int, float, float, int, double, double);
    descriptor: (Ljava/nio/Buffer;IIIIFFIDD)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=15, locals=13, args_size=11
        start local 0 // com.sun.javafx.sg.prism.NGExternalNode this
        start local 1 // java.nio.Buffer buffer
        start local 2 // int x
        start local 3 // int y
        start local 4 // int width
        start local 5 // int height
        start local 6 // float usrWidth
        start local 7 // float usrHeight
        start local 8 // int linestride
        start local 9 // double scaleX
        start local 11 // double scaleY
         0: .line 218
            aload 0 /* this */
            new com.sun.javafx.sg.prism.NGExternalNode$BufferData
            dup
            aload 1 /* buffer */
            iload 8 /* linestride */
            iload 2 /* x */
            iload 3 /* y */
            iload 4 /* width */
            iload 5 /* height */
         1: .line 219
            fload 6 /* usrWidth */
            fload 7 /* usrHeight */
            dload 9 /* scaleX */
            dload 11 /* scaleY */
            invokespecial com.sun.javafx.sg.prism.NGExternalNode$BufferData.<init>:(Ljava/nio/Buffer;IIIIIFFDD)V
         2: .line 218
            putfield com.sun.javafx.sg.prism.NGExternalNode.bufferData:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
         3: .line 220
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.renderData:Ljava/util/concurrent/atomic/AtomicReference;
            new com.sun.javafx.sg.prism.NGExternalNode$RenderData
            dup
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.bufferData:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            iload 2 /* x */
            iload 3 /* y */
            iload 4 /* width */
            iload 5 /* height */
            iconst_1
            invokespecial com.sun.javafx.sg.prism.NGExternalNode$RenderData.<init>:(Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;IIIIZ)V
            invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
         4: .line 221
            return
        end local 11 // double scaleY
        end local 9 // double scaleX
        end local 8 // int linestride
        end local 7 // float usrHeight
        end local 6 // float usrWidth
        end local 5 // int height
        end local 4 // int width
        end local 3 // int y
        end local 2 // int x
        end local 1 // java.nio.Buffer buffer
        end local 0 // com.sun.javafx.sg.prism.NGExternalNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/sun/javafx/sg/prism/NGExternalNode;
            0    5     1      buffer  Ljava/nio/Buffer;
            0    5     2           x  I
            0    5     3           y  I
            0    5     4       width  I
            0    5     5      height  I
            0    5     6    usrWidth  F
            0    5     7   usrHeight  F
            0    5     8  linestride  I
            0    5     9      scaleX  D
            0    5    11      scaleY  D
    MethodParameters:
            Name  Flags
      buffer      
      x           
      y           
      width       
      height      
      usrWidth    
      usrHeight   
      linestride  
      scaleX      
      scaleY      

  public void setImageBounds(int, int, int, int, float, float);
    descriptor: (IIIIFF)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=8, args_size=7
        start local 0 // com.sun.javafx.sg.prism.NGExternalNode this
        start local 1 // int x
        start local 2 // int y
        start local 3 // int width
        start local 4 // int height
        start local 5 // float usrWidth
        start local 6 // float usrHeight
         0: .line 227
            iload 3 /* width */
            i2f
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.bufferData:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.usrwidth:F
            fcmpg
            iflt 1
            iload 4 /* height */
            i2f
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.bufferData:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            getfield com.sun.javafx.sg.prism.NGExternalNode$BufferData.usrheight:F
            fcmpg
            iflt 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: istore 7 /* shrinked */
        start local 7 // boolean shrinked
         3: .line 229
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.bufferData:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            iload 1 /* x */
            iload 2 /* y */
            iload 3 /* width */
            iload 4 /* height */
            fload 5 /* usrWidth */
            fload 6 /* usrHeight */
            invokevirtual com.sun.javafx.sg.prism.NGExternalNode$BufferData.copyWithBounds:(IIIIFF)Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            putfield com.sun.javafx.sg.prism.NGExternalNode.bufferData:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
         4: .line 230
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.renderData:Ljava/util/concurrent/atomic/AtomicReference;
            aload 0 /* this */
            iload 1 /* x */
            iload 2 /* y */
            iload 3 /* width */
            iload 4 /* height */
            iload 7 /* shrinked */
            invokedynamic apply(Lcom/sun/javafx/sg/prism/NGExternalNode;IIIIZ)Ljava/util/function/UnaryOperator;
              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:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  com/sun/javafx/sg/prism/NGExternalNode.lambda$0(IIIIZLcom/sun/javafx/sg/prism/NGExternalNode$RenderData;)Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData; (7)
                  (Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;)Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            invokevirtual java.util.concurrent.atomic.AtomicReference.updateAndGet:(Ljava/util/function/UnaryOperator;)Ljava/lang/Object;
            pop
         5: .line 234
            return
        end local 7 // boolean shrinked
        end local 6 // float usrHeight
        end local 5 // float usrWidth
        end local 4 // int height
        end local 3 // int width
        end local 2 // int y
        end local 1 // int x
        end local 0 // com.sun.javafx.sg.prism.NGExternalNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lcom/sun/javafx/sg/prism/NGExternalNode;
            0    6     1          x  I
            0    6     2          y  I
            0    6     3      width  I
            0    6     4     height  I
            0    6     5   usrWidth  F
            0    6     6  usrHeight  F
            3    6     7   shrinked  Z
    MethodParameters:
           Name  Flags
      x          final
      y          final
      width      final
      height     final
      usrWidth   final
      usrHeight  final

  public void repaintDirtyRegion(int, int, int, int);
    descriptor: (IIII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.sun.javafx.sg.prism.NGExternalNode this
        start local 1 // int dirtyX
        start local 2 // int dirtyY
        start local 3 // int dirtyWidth
        start local 4 // int dirtyHeight
         0: .line 239
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.renderData:Ljava/util/concurrent/atomic/AtomicReference;
            aload 0 /* this */
            iload 1 /* dirtyX */
            iload 2 /* dirtyY */
            iload 3 /* dirtyWidth */
            iload 4 /* dirtyHeight */
            invokedynamic apply(Lcom/sun/javafx/sg/prism/NGExternalNode;IIII)Ljava/util/function/UnaryOperator;
              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:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  com/sun/javafx/sg/prism/NGExternalNode.lambda$1(IIIILcom/sun/javafx/sg/prism/NGExternalNode$RenderData;)Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData; (7)
                  (Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;)Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            invokevirtual java.util.concurrent.atomic.AtomicReference.updateAndGet:(Ljava/util/function/UnaryOperator;)Ljava/lang/Object;
            pop
         1: .line 246
            return
        end local 4 // int dirtyHeight
        end local 3 // int dirtyWidth
        end local 2 // int dirtyY
        end local 1 // int dirtyX
        end local 0 // com.sun.javafx.sg.prism.NGExternalNode this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lcom/sun/javafx/sg/prism/NGExternalNode;
            0    2     1       dirtyX  I
            0    2     2       dirtyY  I
            0    2     3   dirtyWidth  I
            0    2     4  dirtyHeight  I
    MethodParameters:
             Name  Flags
      dirtyX       final
      dirtyY       final
      dirtyWidth   final
      dirtyHeight  final

  public void markContentDirty();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.javafx.sg.prism.NGExternalNode this
         0: .line 249
            aload 0 /* this */
            invokevirtual com.sun.javafx.sg.prism.NGExternalNode.visualsChanged:()V
         1: .line 250
            return
        end local 0 // com.sun.javafx.sg.prism.NGExternalNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/javafx/sg/prism/NGExternalNode;

  protected boolean hasOverlappingContents();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.javafx.sg.prism.NGExternalNode this
         0: .line 253
            iconst_0
            ireturn
        end local 0 // com.sun.javafx.sg.prism.NGExternalNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/javafx/sg/prism/NGExternalNode;

  private com.sun.javafx.sg.prism.NGExternalNode$RenderData lambda$0(int, int, int, int, boolean, com.sun.javafx.sg.prism.NGExternalNode$RenderData);
    descriptor: (IIIIZLcom/sun/javafx/sg/prism/NGExternalNode$RenderData;)Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=9, locals=8, args_size=7
        start local 0 // com.sun.javafx.sg.prism.NGExternalNode this
        start local 6 // com.sun.javafx.sg.prism.NGExternalNode$RenderData prev
         0: .line 231
            aload 6 /* prev */
            ifnull 1
            aload 6 /* prev */
            getfield com.sun.javafx.sg.prism.NGExternalNode$RenderData.clearTarget:Z
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 7 /* clearTarget */
        start local 7 // boolean clearTarget
         3: .line 232
            new com.sun.javafx.sg.prism.NGExternalNode$RenderData
            dup
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.bufferData:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            iload 1
            iload 2
            iload 3
            iload 4
            iload 7 /* clearTarget */
            iload 5
            ior
            invokespecial com.sun.javafx.sg.prism.NGExternalNode$RenderData.<init>:(Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;IIIIZ)V
            areturn
        end local 7 // boolean clearTarget
        end local 6 // com.sun.javafx.sg.prism.NGExternalNode$RenderData prev
        end local 0 // com.sun.javafx.sg.prism.NGExternalNode this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lcom/sun/javafx/sg/prism/NGExternalNode;
            0    4     6         prev  Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            3    4     7  clearTarget  Z

  private com.sun.javafx.sg.prism.NGExternalNode$RenderData lambda$1(int, int, int, int, com.sun.javafx.sg.prism.NGExternalNode$RenderData);
    descriptor: (IIIILcom/sun/javafx/sg/prism/NGExternalNode$RenderData;)Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=8, locals=6, args_size=6
        start local 0 // com.sun.javafx.sg.prism.NGExternalNode this
        start local 5 // com.sun.javafx.sg.prism.NGExternalNode$RenderData prev
         0: .line 240
            aload 5 /* prev */
            ifnull 2
         1: .line 241
            aload 5 /* prev */
            iload 1
            iload 2
            iload 3
            iload 4
            invokevirtual com.sun.javafx.sg.prism.NGExternalNode$RenderData.copyAddDirtyRect:(IIII)Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
            areturn
         2: .line 243
      StackMap locals:
      StackMap stack:
            new com.sun.javafx.sg.prism.NGExternalNode$RenderData
            dup
            aload 0 /* this */
            getfield com.sun.javafx.sg.prism.NGExternalNode.bufferData:Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;
            iload 1
            iload 2
            iload 3
            iload 4
            iconst_0
            invokespecial com.sun.javafx.sg.prism.NGExternalNode$RenderData.<init>:(Lcom/sun/javafx/sg/prism/NGExternalNode$BufferData;IIIIZ)V
            areturn
        end local 5 // com.sun.javafx.sg.prism.NGExternalNode$RenderData prev
        end local 0 // com.sun.javafx.sg.prism.NGExternalNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/javafx/sg/prism/NGExternalNode;
            0    3     5  prev  Lcom/sun/javafx/sg/prism/NGExternalNode$RenderData;
}
SourceFile: "NGExternalNode.java"
NestMembers:
  com.sun.javafx.sg.prism.NGExternalNode$BufferData  com.sun.javafx.sg.prism.NGExternalNode$RenderData
InnerClasses:
  private BufferData = com.sun.javafx.sg.prism.NGExternalNode$BufferData of com.sun.javafx.sg.prism.NGExternalNode
  private RenderData = com.sun.javafx.sg.prism.NGExternalNode$RenderData of com.sun.javafx.sg.prism.NGExternalNode
  public final Usage = com.sun.prism.Texture$Usage of com.sun.prism.Texture
  public final WrapMode = com.sun.prism.Texture$WrapMode of com.sun.prism.Texture
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles