void (@NotNull XLineBreakpoint<XBreakpointProperties> breakpoint) { final XSourcePosition sourcePosition = breakpoint.getSourcePosition(); if (sourcePosition == null || !sourcePosition.getFile().exists() || !sourcePosition.getFile().isValid()) { // ??? return; } final VirtualFile file = sourcePosition.getFile(); final Project project = myXsltDebugProcess.getSession().getProject(); final String fileURL = getFileURL(file); final int lineNumber = getActualLineNumber(breakpoint, project); if (lineNumber == -1) { myXsltDebugProcess.getSession().setBreakpointInvalid(breakpoint, "Unsupported breakpoint position"); return; } try { final BreakpointManager manager = myXsltDebugProcess.getBreakpointManager(); Breakpoint bp; if ((bp = manager.getBreakpoint(fileURL, lineNumber)) != null) { bp.setEnabled(true); } else { manager.setBreakpoint(fileURL, lineNumber); } } catch (DebuggerStoppedException ignore) { } catch (VMPausedException e) { final XDebugSession session = myXsltDebugProcess.getSession(); session.reportMessage(XsltDebuggerBundle.message("notification.content.target.vm.not.responding.breakpoint.can.not.be.set"), MessageType.ERROR); session.setBreakpointInvalid(breakpoint, "Target VM is not responding. Breakpoint can not be set"); } }