Buggy code:
public class ViewRisksPlotUniquenessEstimates extends ViewRisks < AnalysisContextRisk > { private static final int MIN_CATEGORY_WIDTH = 10 ; private static final DecimalFormat FORMAT = new DecimalFormat ( "##0.0###################" ) ; private static final double [ ] POINTS = ViewRisksPlotUniquenessEstimates . getPoints ( ) ; private static final String [ ] LABELS = ViewRisksPlotUniquenessEstimates . getLabels ( ViewRisksPlotUniquenessEstimates . POINTS ) ; private static String [ ] getLabels ( double [ ] points ) { } private static double [ ] getPoints ( ) { } private Chart chart ; private Composite root ; private boolean showAllModels ; private AnalysisManager manager ; public ViewRisksPlotUniquenessEstimates ( final Composite parent , final Controller controller , final ModelPart target , final ModelPart reset , final boolean showAllModels ) { } @ Override public void update ( ModelEvent event ) { } private void createSeries ( ISeriesSet seriesSet , double [ ] data , String label , PlotSymbolType symbol , Color color ) { } private void resetChart ( ) { } private void updateCategories ( ) { } @ Override protected Control createControl ( Composite parent ) { } @ Override protected AnalysisContextRisk createViewConfig ( AnalysisContext context ) { } @ Override protected void doReset ( ) { } @ Override protected void doUpdate ( final AnalysisContextRisk context ) { if ( ! ( this . isEnabled ( ) ) ) { if ( ( manager ) != null ) { manager . stop ( ) ; } this . setStatusEmpty ( ) ; return ; } Analysis analysis = new Analysis ( ) { RiskEstimateBuilderInterruptible builder = getBuilder ( context ) ; private boolean stopped = false ; private double [ ] dataPitman ; private double [ ] dataZayatz ; private double [ ] dataSNB ; private double [ ] dataDankar ; private int idx ; @ Override public int getProgress ( ) { return ( ( int ) ( Math . round ( ( ( ( idx ) * 100.0 ) + ( ( double ) ( builder . getProgress ( ) ) ) ) ) ) ) // ( ViewRisksPlotUniquenessEstimates . POINTS . length ) ; } @ Override public void onError ( ) { setStatusEmpty ( ) ; } @ Override public void onFinish ( ) { if ( ( stopped ) || ( ! ( isEnabled ( ) ) ) ) { return ; } resetChart ( ) ; ISeriesSet seriesSet = chart . getSeriesSet ( ) ; if ( showAllModels ) { createSeries ( seriesSet , dataPitman , "Pitman" , CIRCLE , COLOR_BLACK ) ; createSeries ( seriesSet , dataZayatz , "Zayatz" , CROSS , COLOR_BLUE ) ; createSeries ( seriesSet , dataSNB , "SNB" , DIAMOND , COLOR_RED ) ; createSeries ( seriesSet , dataDankar , "Dankar" , SQUARE , COLOR_DARK_GRAY ) ; chart . getLegend ( ) . setVisible ( true ) ; } else { createSeries ( seriesSet , dataDankar , "Dankar" , SQUARE , COLOR_BLACK ) ; chart . getLegend ( ) . setVisible ( false ) ; } IAxisSet axisSet = chart . getAxisSet ( ) ; IAxis yAxis = axisSet . getYAxis ( 0 ) ; yAxis . setRange ( new Range ( 0.0 , 1.0 ) ) ; IAxis xAxis = axisSet . getXAxis ( 0 ) ; xAxis . setRange ( new Range ( 0.0 , ViewRisksPlotUniquenessEstimates . LABELS . length ) ) ; xAxis . setCategorySeries ( ViewRisksPlotUniquenessEstimates . LABELS ) ; chart . updateLayout ( ) ; chart . update ( ) ; updateCategories ( ) ; chart . layout ( ) ; chart . setRedraw ( true ) ; chart . redraw ( ) ; setStatusDone ( ) ; } @ Override public void onInterrupt ( ) { <START_BUG> if ( ( stopped ) || ( ! ( isEnabled ( ) ) ) ) { <END_BUG> setStatusEmpty ( ) ; } else { setStatusWorking ( ) ; } } @ Override public void run ( ) throws InterruptedException { long time = System . currentTimeMillis ( ) ; dataDankar = new double [ ViewRisksPlotUniquenessEstimates . POINTS . length ] ; if ( showAllModels ) { dataPitman = new double [ ViewRisksPlotUniquenessEstimates . POINTS . length ] ; dataZayatz = new double [ ViewRisksPlotUniquenessEstimates . POINTS . length ] ; dataSNB = new double [ ViewRisksPlotUniquenessEstimates . POINTS . length ] ; } for ( idx = 0 ; ( idx ) < ( ViewRisksPlotUniquenessEstimates . POINTS . length ) ; ( idx ) ++ ) { if ( stopped ) { throw new InterruptedException ( ) ; } builder = context . handle . getRiskEstimator ( ARXPopulationModel . create ( ViewRisksPlotUniquenessEstimates . POINTS [ idx ] ) , builder . getEquivalenceClassModel ( ) ) . getInterruptibleInstance ( ) ; if ( ( ( idx ) == 0 ) && ( ( builder . getSampleBasedUniquenessRisk ( ) . getFractionOfUniqueTuples ( ) ) == 0.0 ) ) { Arrays . fill ( dataDankar , 0.0 ) ; if ( showAllModels ) { Arrays . fill ( dataPitman , 0.0 ) ; Arrays . fill ( dataZayatz , 0.0 ) ; Arrays . fill ( dataSNB , 0.0 ) ; } break ; } dataDankar [ idx ] = builder . getPopulationBasedUniquenessRisk ( ) . getFractionOfUniqueTuplesDankar ( ) ; if ( showAllModels ) { dataPitman [ idx ] = builder . getPopulationBasedUniquenessRisk ( ) . getFractionOfUniqueTuplesPitman ( ) ; dataZayatz [ idx ] = builder . getPopulationBasedUniquenessRisk ( ) . getFractionOfUniqueTuplesZayatz ( ) ; dataSNB [ idx ] = builder . getPopulationBasedUniquenessRisk ( ) . getFractionOfUniqueTuplesSNB ( ) ; } } while ( ( ( ( System . currentTimeMillis ( ) ) - time ) < ( MINIMAL_WORKING_TIME ) ) && ( ! ( stopped ) ) ) { Thread . sleep ( 10 ) ; } } @ Override public void stop ( ) { builder . interrupt ( ) ; this . stopped = true ; } } ; this . manager . start ( analysis ) ; }

Fix:
if ( ! ( isEnabled ( ) ) ) {