Buggy code:
public class PixelCalibratorPlugin implements MMPlugin { public static final String menuName = "Pixel<seq2seq4repair_space>Calibrator" ; public static final String tooltipDescription = "Calibrate<seq2seq4repair_space>pixel<seq2seq4repair_space>size<seq2seq4repair_space>by<seq2seq4repair_space>moving<seq2seq4repair_space>XY<seq2seq4repair_space>stage<seq2seq4repair_space>and<seq2seq4repair_space>computing<seq2seq4repair_space>" + "image<seq2seq4repair_space>displacement" ; private CMMCore core_ ; private MMStudio app_ ; private CalibrationThread calibrationThread_ ; private PixelCalibratorDialog dialog_ ; private final Class cp_ = MMStudio . class ; double safeTravelRadiusUm_ = 1000 ; @ Override public void dispose ( ) { } @ Override public String getCopyright ( ) { } @ Override public String getDescription ( ) { } @ Override public String getInfo ( ) { } @ Override public String getVersion ( ) { } @ Override public void setApp ( Studio app ) { } @ Override public void show ( ) { } private double getPixelSize ( AffineTransform cameraToStage ) { } public synchronized boolean isCalibrationRunning ( ) { } void startCalibration ( ) { } void stopCalibration ( ) { } void showFailureMessage ( ) { } void promptToSaveResult ( ) { AffineTransform result = calibrationThread_ . getResult ( ) ; if ( result == null ) { showFailureMessage ( ) ; return ; } double pixelSize = MathUtils . round ( getPixelSize ( result ) , 4 ) ; CalibrationListDlg calDialog = app_ . getCalibrationListDlg ( ) ; calDialog . updateCalibrations ( ) ; calDialog . setVisible ( true ) ; double [ ] affValues = null ; result . getMatrix ( affValues ) ; try { app_ . profile ( ) . setDoubleArray ( MMStudio . class , ( "affine_transform_" + ( core_ . getCurrentPixelSizeConfig ( ) ) ) , JavaUtils . doubleArrayToClass ( affValues ) ) ; } catch ( Exception ex ) { <START_BUG> app_ . logError ( ex ) ; <END_BUG> } int response = JOptionPane . showConfirmDialog ( null , ( ( ( ( ( String . format ( "Affine<seq2seq4repair_space>transform<seq2seq4repair_space>parameters:<seq2seq4repair_space>XScale=%.2f<seq2seq4repair_space>YScale=%.2f<seq2seq4repair_space>XShear=%.4f<seq2seq4repair_space>YShear=%.4f\n" , result . getScaleX ( ) , result . getScaleY ( ) , result . getShearX ( ) , result . getShearY ( ) ) ) + "<html>The<seq2seq4repair_space>Pixel<seq2seq4repair_space>Calibrator<seq2seq4repair_space>plugin<seq2seq4repair_space>has<seq2seq4repair_space>measured<seq2seq4repair_space>a<seq2seq4repair_space>pixel<seq2seq4repair_space>size<seq2seq4repair_space>of<seq2seq4repair_space>" ) + pixelSize ) + "<seq2seq4repair_space>&#956;m.<br>" ) + "Do<seq2seq4repair_space>you<seq2seq4repair_space>wish<seq2seq4repair_space>to<seq2seq4repair_space>store<seq2seq4repair_space>this<seq2seq4repair_space>value<seq2seq4repair_space>in<seq2seq4repair_space>your<seq2seq4repair_space>pixel<seq2seq4repair_space>calibration<seq2seq4repair_space>settings?<//html>" ) , "Pixel<seq2seq4repair_space>calibration<seq2seq4repair_space>succeeded!" , JOptionPane . YES_NO_OPTION ) ; if ( response == ( JOptionPane . YES_OPTION ) ) { String pixelConfig ; try { pixelConfig = core_ . getCurrentPixelSizeConfig ( ) ; if ( ( pixelConfig . length ( ) ) > 0 ) { core_ . setPixelSizeUm ( pixelConfig , pixelSize ) ; } else { CalibrationEditor editor = new CalibrationEditor ( "Res" , NumberUtils . doubleToDisplayString ( pixelSize ) ) ; editor . setCore ( core_ ) ; editor . editNameOnly ( ) ; editor . setVisible ( true ) ; } calDialog . updateCalibrations ( ) ; calDialog . setVisible ( true ) ; } catch ( Exception ex ) { ReportingUtils . logError ( ex ) ; } } } void update ( ) { } void calibrationDone ( ) { } void calibrationFailed ( boolean canceled ) { } }

Fix:
app_ . logs ( ) . logError ( ex ) ;