private <T extends XBreakpointProperties> XBreakpointBase<?, T, ?> createBreakpoint(XBreakpointType<XBreakpoint<T>, T> type,
                                                                                      T properties, final boolean enabled,
                                                                                      boolean defaultBreakpoint) {
    return withLockMaybeCancellable(myLock, () -> {
      BreakpointState<?, T, ?> state = new BreakpointState<>(enabled,
                                                             type.getId(),
                                                             defaultBreakpoint ? 0 : ++myTime, type.getDefaultSuspendPolicy());
      getBreakpointDefaults(type).applyDefaults(state);
      state.setGroup(myDefaultGroup);
      return new XBreakpointBase<XBreakpoint<T>, T, BreakpointState<?, T, ?>>(type, this, properties, state);
    });
  }
private <T extends XBreakpointProperties> XBreakpointBase<?, T, ?> createBreakpoint(XBreakpointType<XBreakpoint<T>, T> type,
                                                                                      T properties, final boolean enabled,
                                                                                      boolean defaultBreakpoint)