@Nullable
  <T extends XBreakpointProperties> XLineBreakpoint<T> copyLineBreakpoint(@NotNull XLineBreakpoint<T> source,
                                                                          @NotNull String fileUrl,
                                                                          int line) {
    return withLockMaybeCancellable(myLock, () -> {
      if (!(source instanceof XLineBreakpointImpl<?>)) {
        return null;
      }
      myDependentBreakpointManager.saveState();
      final LineBreakpointState sourceState = ((XLineBreakpointImpl<?>)source).getState();

      Element element = XmlSerializer.serialize(sourceState);
      LineBreakpointState newState =
        element == null ? new LineBreakpointState() : XmlSerializer.deserialize(element, LineBreakpointState.class);
      newState.setLine(line);
      newState.setFileUrl(fileUrl);

      //noinspection unchecked
      final XLineBreakpointImpl<T> breakpoint = (XLineBreakpointImpl<T>)createBreakpoint(newState);
      if (breakpoint != null) {
        addBreakpoint(breakpoint, false, true);
        final XBreakpoint<?> masterBreakpoint = myDependentBreakpointManager.getMasterBreakpoint(source);
        if (masterBreakpoint != null) {
          myDependentBreakpointManager.setMasterBreakpoint(breakpoint, masterBreakpoint, sourceState.getDependencyState().isLeaveEnabled());
        }
      }

      return breakpoint;
    });
  }
@Nullable
  <T extends XBreakpointProperties> XLineBreakpoint<T> copyLineBreakpoint(@NotNull XLineBreakpoint<T> source,
                                                                          @NotNull String fileUrl,
                                                                          int line)