<s> package org . eclipse . jdt . internal . core ; import org . eclipse . core . runtime . IProgressMonitor ; import org . eclipse . core . runtime . OperationCanceledException ; import org . eclipse . jdt . core . compiler . CategorizedProblem ; import org . eclipse . jdt . internal . compiler . problem . AbortCompilation ; import org . eclipse . jdt . internal . compiler . problem . DefaultProblemFactory ; public class CancelableProblemFactory extends DefaultProblemFactory { public IProgressMonitor monitor ; public CancelableProblemFactory ( IProgressMonitor monitor ) { super ( ) ; this . monitor = monitor ; } public CategorizedProblem createProblem ( char [ ] originatingFileName , int problemId , String [ ] problemArguments , String [ ] messageArguments , int severity , int startPosition , int endPosition , int lineNumber , int columnNumber ) { if ( this . monitor != null && this . monitor . isCanceled ( ) ) throw new AbortCompilation ( true , new OperationCanceledException ( ) ) ; return super . createProblem ( originatingFileName , problemId , problemArguments , messageArguments , severity , startPosition , endPosition , lineNumber , columnNumber ) ; } public CategorizedProblem createProblem ( char [ ] originatingFileName , int problemId , String [ ] problemArguments , int elaborationId , String [ ] messageArguments , int severity , int startPosition , int endPosition , int lineNumber , int columnNumber ) { if ( this . monitor != null && this . monitor . isCanceled ( ) ) throw new AbortCompilation ( true , new OperationCanceledException ( ) ) ; return super . createProblem ( originatingFileName , problemId , problemArguments , elaborationId , messageArguments , severity , startPosition , endPosition , lineNumber , columnNumber ) ; } } </s>