Buggy code:
public class RecallPlugin implements MMPlugin { public static final String menuName = "Live<seq2seq4repair_space>Replay" ; public static final String tooltipDescription = "Recalls<seq2seq4repair_space>(live)<seq2seq4repair_space>images<seq2seq4repair_space>left<seq2seq4repair_space>over<seq2seq4repair_space>in<seq2seq4repair_space>the<seq2seq4repair_space>internal<seq2seq4repair_space>sequence<seq2seq4repair_space>buffer" ; private CMMCore core_ ; private MMStudio gui_ ; private DisplayImageRoutine displayImageRoutine_ ; private final String ACQ_NAME = "Live<seq2seq4repair_space>Replay" ; private int multiChannelCameraNrCh_ ; private Datastore store_ ; @ Override public void setApp ( ScriptInterface app ) { } @ Override public void dispose ( ) { } @ Override public void show ( ) { store_ = gui_ . data ( ) . createRAMDatastore ( ) ; gui_ . getDisplayManager ( ) . createDisplay ( store_ ) ; gui_ . getDisplayManager ( ) . manage ( store_ ) ; int remaining = core_ . getRemainingImageCount ( ) ; if ( remaining < 1 ) { <START_BUG> gui_ . showMessage ( "There<seq2seq4repair_space>are<seq2seq4repair_space>no<seq2seq4repair_space>Images<seq2seq4repair_space>in<seq2seq4repair_space>the<seq2seq4repair_space>Micro-Manage<seq2seq4repair_space>buffer" ) ; <END_BUG> return ; } LinkedBlockingQueue < TaggedImage > imageQueue_ = new LinkedBlockingQueue < TaggedImage > ( ) ; gui_ . runDisplayThread ( imageQueue_ , displayImageRoutine_ ) ; multiChannelCameraNrCh_ = ( ( int ) ( core_ . getNumberOfCameraChannels ( ) ) ) ; String camera = core_ . getCameraDevice ( ) ; if ( ( multiChannelCameraNrCh_ ) == 1 ) { int frameCounter = 0 ; try { for ( int i = 0 ; i < remaining ; i ++ ) { TaggedImage tImg = core_ . popNextTaggedImage ( ) ; normalizeTags ( tImg , frameCounter ) ; frameCounter ++ ; imageQueue_ . put ( tImg ) ; } imageQueue_ . put ( POISON ) ; } catch ( Exception ex ) { gui_ . logError ( ex , "Error<seq2seq4repair_space>in<seq2seq4repair_space>Live<seq2seq4repair_space>Replay" ) ; } } else if ( ( multiChannelCameraNrCh_ ) > 1 ) { int [ ] frameCounters = new int [ multiChannelCameraNrCh_ ] ; try { for ( int i = 0 ; i < remaining ; i ++ ) { TaggedImage tImg = core_ . popNextTaggedImage ( ) ; if ( tImg . tags . has ( ( camera + "-CameraChannelName" ) ) ) { String channelName = tImg . tags . getString ( ( camera + "-CameraChannelName" ) ) ; tImg . tags . put ( "Channel" , channelName ) ; int channelIndex = tImg . tags . getInt ( ( camera + "-CameraChannelIndex" ) ) ; tImg . tags . put ( "ChannelIndex" , channelIndex ) ; normalizeTags ( tImg , frameCounters [ channelIndex ] ) ; ( frameCounters [ channelIndex ] ) ++ ; imageQueue_ . put ( tImg ) ; } } imageQueue_ . put ( POISON ) ; } catch ( Exception ex ) { gui_ . logError ( ex , "Error<seq2seq4repair_space>in<seq2seq4repair_space>Live<seq2seq4repair_space>Replay<seq2seq4repair_space>Plugin" ) ; } } } private void normalizeTags ( TaggedImage ti , int frameIndex ) { } public void configurationChanged ( ) { } @ Override public String getInfo ( ) { } @ Override public String getDescription ( ) { } @ Override public String getVersion ( ) { } @ Override public String getCopyright ( ) { } }

Fix:
gui_ . showMessage ( "There<seq2seq4repair_space>are<seq2seq4repair_space>no<seq2seq4repair_space>Images<seq2seq4repair_space>in<seq2seq4repair_space>the<seq2seq4repair_space>Micro-Manager<seq2seq4repair_space>buffer" ) ;