throws OperationCancellation, InvocationTargetException {
try {
performLongRunningComputation_do(monitor);
} catch (CoreException ce) {
if(monitor.isCanceled()) {
throw new OperationCancellation();
}
if(ce.getCause() instanceof CancellationException) {
// In principle this should not happen, because monitor.isCanceled() would be true.
// But in case some operation code used other monitor or some other means to cancel...
throw (CancellationException) ce.getCause();