// used in Fabrique
 public synchronized void addBreakpoint(@NotNull Breakpoint breakpoint) {
   myBreakpoints.put(breakpoint.myXBreakpoint, breakpoint);
   myBreakpointsListForIteration = null;
   breakpoint.updateUI();
   RequestManagerImpl.createRequests(breakpoint);
   myDispatcher.getMulticaster().breakpointsChanged();
   if (breakpoint instanceof MethodBreakpoint || breakpoint instanceof WildcardMethodBreakpoint) {
     XDebugSessionImpl.NOTIFICATION_GROUP
         .createNotification(
             "Method breakpoints may dramatically slow down debugging", MessageType.WARNING)
         .notify(myProject);
   }
 }
  @Nullable
  public MethodBreakpoint addMethodBreakpoint(Document document, int lineIndex) {
    ApplicationManager.getApplication().assertIsDispatchThread();

    XLineBreakpoint xBreakpoint =
        addXLineBreakpoint(JavaMethodBreakpointType.class, document, lineIndex);
    MethodBreakpoint breakpoint = MethodBreakpoint.create(myProject, xBreakpoint);
    if (breakpoint == null) {
      return null;
    }

    XDebugSessionImpl.NOTIFICATION_GROUP
        .createNotification(
            "Method breakpoints may dramatically slow down debugging", MessageType.WARNING)
        .notify(myProject);

    addBreakpoint(breakpoint);
    return breakpoint;
  }