void (MouseEvent e) { if (e.getClickCount() != 1 || e.getButton() != MouseEvent.BUTTON1 || !isShowNewInstancesEvent(e)) { return; } TypeInfo selectedTypeInfo = getTable().getSelectedClass(); final ReferenceType ref = selectedTypeInfo != null ? ((JavaTypeInfo)selectedTypeInfo).getReferenceType() : null; final TrackerForNewInstances strategy = ref == null ? null : getStrategy(selectedTypeInfo); XDebugSession debugSession = XDebuggerManager.getInstance(myProject).getCurrentSession(); if (strategy != null && debugSession != null) { final DebugProcess debugProcess = DebuggerManager.getInstance(myProject).getDebugProcess(debugSession.getDebugProcess().getProcessHandler()); final MemoryViewDebugProcessData data = debugProcess.getUserData(MemoryViewDebugProcessData.KEY); if (data != null) { final List<ObjectReference> newInstances = strategy.getNewInstances(); data.getTrackedStacks().pinStacks(ref); final InstancesWindow instancesWindow = new InstancesWindow( debugSession, limit -> ContainerUtil.map(newInstances, JavaReferenceInfo::new), ref ); Disposer.register(instancesWindow.getDisposable(), () -> data.getTrackedStacks().unpinStacks(ref)); instancesWindow.show(); } else { LOG.warn("MemoryViewDebugProcessData not found in debug session user data"); } } }