Buggy code:
public class Lwjgl3Graphics implements Graphics , Disposable { private final Lwjgl3Window window ; private final GL20 gl20 ; private final GL30 gl30 ; private volatile int backBufferWidth ; private volatile int backBufferHeight ; private volatile int logicalWidth ; private volatile int logicalHeight ; private BufferFormat bufferFormat ; private long lastFrameTime = - 1 ; private float deltaTime ; private long frameId ; private long frameCounterStart = 0 ; private int frames ; private int fps ; IntBuffer tmpBuffer = BufferUtils . createIntBuffer ( 1 ) ; IntBuffer tmpBuffer2 = BufferUtils . createIntBuffer ( 1 ) ; private GLFWFramebufferSizeCallback resizeCallback = new GLFWFramebufferSizeCallback ( ) { @ Override public void invoke ( long windowHandle , final int width , final int height ) { } } ; public Lwjgl3Graphics ( Lwjgl3Window window ) { } public Lwjgl3Window getWindow ( ) { } private void updateFramebufferInfo ( ) { } void update ( ) { } @ Override public boolean isGL30Available ( ) { } @ Override public GL20 getGL20 ( ) { } @ Override public GL30 getGL30 ( ) { } @ Override public int getWidth ( ) { } @ Override public int getHeight ( ) { } @ Override public int getBackBufferWidth ( ) { } @ Override public int getBackBufferHeight ( ) { } public int getLogicalWidth ( ) { } public int getLogicalHeight ( ) { } @ Override public long getFrameId ( ) { } @ Override public float getDeltaTime ( ) { } @ Override public float getRawDeltaTime ( ) { } @ Override public int getFramesPerSecond ( ) { } @ Override public GraphicsType getType ( ) { } @ Override public float getPpiX ( ) { } @ Override public float getPpiY ( ) { } @ Override public float getPpcX ( ) { } @ Override public float getPpcY ( ) { } @ Override public float getDensity ( ) { } @ Override public boolean supportsDisplayModeChange ( ) { } @ Override public Monitor getPrimaryMonitor ( ) { } @ Override public Monitor getMonitor ( ) { } @ Override public Monitor [ ] getMonitors ( ) { } @ Override public DisplayMode [ ] getDisplayModes ( ) { } @ Override public DisplayMode [ ] getDisplayModes ( Monitor monitor ) { } @ Override public DisplayMode getDisplayMode ( ) { } @ Override public DisplayMode getDisplayMode ( Monitor monitor ) { } @ Override public boolean setFullscreenMode ( DisplayMode displayMode ) { } @ Override public boolean setWindowedMode ( int width , int height ) { } private boolean recreateWindow ( int width , int height , Lwjgl3Graphics . Lwjgl3DisplayMode displayMode ) { } @ Override public void setTitle ( String title ) { } @ Override public void setVSync ( boolean vsync ) { } @ Override public BufferFormat getBufferFormat ( ) { } @ Override public boolean supportsExtension ( String extension ) { } @ Override public void setContinuousRendering ( boolean isContinuous ) { } @ Override public boolean isContinuousRendering ( ) { } @ Override public void requestRendering ( ) { } @ Override public boolean isFullscreen ( ) { } @ Override public Cursor newCursor ( Pixmap pixmap , int xHotspot , int yHotspot ) { } @ Override public void setCursor ( Cursor cursor ) { <START_BUG> GLFW . glfwSetCursor ( getWindow ( ) . getWindowHandle ( ) , ( ( Lwjgl3Cursor ) ( cursor ) ) . cursor ) ; <END_BUG> } @ Override public void setSystemCursor ( SystemCursor systemCursor ) { } @ Override public void dispose ( ) { } public static class Lwjgl3DisplayMode extends DisplayMode { final long monitorHandle ; Lwjgl3DisplayMode ( long monitor , int width , int height , int refreshRate , int bitsPerPixel ) { } public long getMonitor ( ) { } } public static class Lwjgl3Monitor extends Monitor { final long monitorHandle ; Lwjgl3Monitor ( long monitor , int virtualX , int virtualY , String name ) { } public long getMonitorHandle ( ) { } } }

Fix:
GLFW . glfwSetCursor ( getWindow ( ) . getWindowHandle ( ) , ( ( Lwjgl3Cursor ) ( cursor ) ) . glfwCursor ) ;