@Nullable
  public static Breakpoint<?> getJavaBreakpoint(@Nullable final XBreakpoint<?> xBreakpoint) {
    if (xBreakpoint == null) {
      return null;
    }

    Breakpoint<?> existingBreakpoint = xBreakpoint.getUserData(Breakpoint.DATA_KEY);
    if (existingBreakpoint != null) {
      return existingBreakpoint;
    }

    if (!(xBreakpoint.getType() instanceof JavaBreakpointType)) {
      return null;
    }

    XBreakpointBase<?, ?, ?> xBreakpointBase = (XBreakpointBase<?, ?, ?>)xBreakpoint;
    Project project = xBreakpointBase.getProject();
    Breakpoint<?> breakpoint;
    try {
      //noinspection unchecked,rawtypes
      breakpoint = ((JavaBreakpointType)xBreakpoint.getType()).createJavaBreakpoint(project, xBreakpoint);
    }
    catch (Throwable e) {
      DebuggerUtilsImpl.logError(e);
      return null;
    }

    // Note that a newly created breakpoint might be thrown out if another thread set its own Java breakpoint concurrently.
    return xBreakpointBase.putUserDataIfAbsent(Breakpoint.DATA_KEY, breakpoint);
  }
@Nullable
  public static Breakpoint<?> getJavaBreakpoint(@Nullable final XBreakpoint<?> xBreakpoint)