Bug 89031 [Undo/Redo] IWorkbench#getOperationSupport() marked experimental
IWorkbench#getOperationSupport() marked experimental
bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/operations/LinearUndoViolationDetector.java
IUndoContext [] contexts = operation.getContexts();
		for (int i=0; i<contexts.length; i++) {
			IUndoContext context = contexts[i];
			if (history.getRedoOperation(context) != operation) {
				IStatus status = allowLinearRedoViolation(operation, context, history, info);
				if (!status.isOK()) return status;
			}
		}
		return Status.OK_STATUS;
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.core.commands.operations.IOperationApprover#proceedUndoing(org.eclipse.core.commands.operations.IUndoableOperation,
	 *      org.eclipse.core.commands.operations.IUndoContext, org.eclipse.core.commands.operations.IOperationHistory, org.eclipse.core.runtime.IAdaptable)
	 */
	public IStatus proceedUndoing(IUndoableOperation operation,
			IOperationHistory history, IAdaptable info) {
		IUndoContext [] contexts = operation.getContexts();
		for (int i=0; i<contexts.length; i++) {
			IUndoContext context = contexts[i];
			if (history.getUndoOperation(context) != operation) {
				IStatus status = allowLinearUndoViolation(operation, context, history, info);
				if (!status.isOK()) return status;
			}
		}
		return Status.OK_STATUS;
	}
}