Buggy code:
public class CLIMain extends AbstractLoggable { private static final int HELP_OPT = 'h' ; private static final int QUIET_OPT = 'q' ; private static final int VERBOSE_OPT = 'v' ; private static final int FILE_OPT = 'f' ; private static final int LOG_LEVEL_OPT = 'l' ; private static final int DEFINE_OPT = 'D' ; private static final int BUILDER_PARAM_OPT = 'B' ; private static final int VERSION_OPT = 1 ; private static final int LISTENER_OPT = 2 ; private static final int TASKLIB_DIR_OPT = 5 ; private static final int INCREMENTAL_OPT = 6 ; private static final int HOME_DIR_OPT = 7 ; private static final int DRY_RUN_OPT = 8 ; private static final int [ ] INFO_OPT_INCOMPAT = new int [ ] { CLIMain . HELP_OPT , CLIMain . QUIET_OPT , CLIMain . VERBOSE_OPT , CLIMain . FILE_OPT , CLIMain . LOG_LEVEL_OPT , CLIMain . VERSION_OPT , CLIMain . LISTENER_OPT , CLIMain . DEFINE_OPT , CLIMain . DRY_RUN_OPT } ; private static final int [ ] LOG_OPT_INCOMPAT = new int [ ] { CLIMain . QUIET_OPT , CLIMain . VERBOSE_OPT , CLIMain . LOG_LEVEL_OPT } ; private ProjectListener m_listener ; private Parameters m_parameters = new Parameters ( ) ; private ArrayList m_targets = new ArrayList ( ) ; private Parameters m_defines = new Parameters ( ) ; private Parameters m_builderParameters = new Parameters ( ) ; private boolean m_dryRun = false ; public static void main ( final String [ ] args ) { } private void usage ( final CLOptionDescriptor [ ] options ) { } private CLOptionDescriptor [ ] createCLOptions ( ) { } private boolean parseCommandLineOptions ( final String [ ] args ) { } private void setupDefaultParameters ( ) { } private void execute ( final String [ ] args ) throws Exception { setupDefaultParameters ( ) ; if ( ! ( parseCommandLineOptions ( args ) ) ) { return ; } final String logLevel = m_parameters . getParameter ( "log.level" , null ) ; setLogger ( createLogger ( logLevel ) ) ; final String home = m_parameters . getParameter ( "myrmidon.home" , null ) ; final File homeDir = new File ( home ) . getAbsoluteFile ( ) ; if ( ! ( homeDir . isDirectory ( ) ) ) { throw new Exception ( ( ( "myrmidon-home<seq2seq4repair_space>(" + homeDir ) + ")<seq2seq4repair_space>is<seq2seq4repair_space>not<seq2seq4repair_space>a<seq2seq4repair_space>directory" ) ) ; } final String filename = m_parameters . getParameter ( "filename" , null ) ; final File buildFile = new File ( filename ) . getCanonicalFile ( ) ; if ( ! ( buildFile . isFile ( ) ) ) { throw new Exception ( ( ( "File<seq2seq4repair_space>" + buildFile ) + "<seq2seq4repair_space>is<seq2seq4repair_space>not<seq2seq4repair_space>a<seq2seq4repair_space>file<seq2seq4repair_space>or<seq2seq4repair_space>doesn't<seq2seq4repair_space>exist" ) ) ; } final String listenerName = m_parameters . getParameter ( "listener" , null ) ; final ProjectListener listener = createListener ( listenerName ) ; final LogTarget target = new org . apache . myrmidon . components . workspace . LogTargetToListenerAdapter ( listener ) ; getLogger ( ) . setLogTargets ( new LogTarget [ ] { target } ) ; getLogger ( ) . warn ( ( "Ant<seq2seq4repair_space>Build<seq2seq4repair_space>File:<seq2seq4repair_space>" + buildFile ) ) ; getLogger ( ) . info ( ( "Ant<seq2seq4repair_space>Home<seq2seq4repair_space>Directory:<seq2seq4repair_space>" + homeDir ) ) ; if ( m_dryRun ) { m_parameters . setParameter ( ROLE , "org.apache.myrmidon.components.executor.PrintingExecutor" ) ; } final Embeddor embeddor = new DefaultEmbeddor ( ) ; setupLogger ( embeddor ) ; embeddor . parameterize ( m_parameters ) ; embeddor . initialize ( ) ; embeddor . start ( ) ; final Project project = embeddor . createProject ( buildFile . toString ( ) , null , m_builderParameters ) ; BufferedReader reader = null ; final boolean incremental = m_parameters . getParameterAsBoolean ( "incremental" , false ) ; while ( true ) { <START_BUG> final Workspace workspace = embeddor . createWorkspace ( project , m_defines ) ; <END_BUG> workspace . addProjectListener ( listener ) ; doBuild ( workspace , project , m_targets ) ; if ( ! incremental ) break ; System . out . println ( "Continue<seq2seq4repair_space>?<seq2seq4repair_space>(Enter<seq2seq4repair_space>no<seq2seq4repair_space>to<seq2seq4repair_space>stop)" ) ; if ( null == reader ) { reader = new BufferedReader ( new InputStreamReader ( System . in ) ) ; } String line = reader . readLine ( ) ; if ( line . equalsIgnoreCase ( "no" ) ) break ; } embeddor . stop ( ) ; embeddor . dispose ( ) ; } private void doBuild ( final Workspace workspace , final Project project , final ArrayList targets ) { } private Logger createLogger ( final String logLevel ) throws Exception { } private ProjectListener createListener ( final String listener ) throws Exception { } private void addToContext ( final TaskContext context , final Map map ) throws Exception { } }

Fix:
final Workspace workspace = embeddor . createWorkspace ( m_defines ) ;