Source:
<code>private TreeSet<Clazz> getRootClasses() { TreeSet<Clazz> classes = new TreeSet<Clazz>(); for (String rootClassPattern : ROOT_CLASS_PATTERNS) { classes.addAll(getMatchingClasses(rootClassPattern)); } for (String rootClassName : ROOT_CLASSES) { Clazz clazz = config.getClazzes().load(rootClassName); if (clazz == null) { throw new CompilerException("Root class " + rootClassName + " not found"); } classes.add(clazz); } if (config.getMainClass() != null) { Clazz clazz = config.getClazzes().load(config.getMainClass().replace('.', '/')); if (clazz == null) { throw new CompilerException("Main class " + config.getMainClass() + " not found"); } classes.add(clazz); } if (!config.getCustomIBClasses().isEmpty()) { for (String s : config.getCustomIBClasses()) { <START> if (s == null || s.trim().isEmpty()) { <END> continue; } s = s.trim(); Clazz clazz = config.getClazzes().load(s.replace('.', '/')); if (clazz != null) { classes.add(clazz); } } } if (config.getForceLinkClasses().isEmpty()) { if (config.getMainClass() == null) { classes.addAll(config.getClazzes().listClasses()); } } else { for (String pattern : config.getForceLinkClasses()) { if (pattern == null || pattern.trim().isEmpty()) { continue; } pattern = pattern.trim(); if (pattern.indexOf('*') == -1) { Clazz clazz = config.getClazzes().load(pattern.replace('.', '/')); if (clazz == null) { throw new CompilerException("Root class " + pattern + " not found"); } classes.add(clazz); } else { Collection<Clazz> matches = getMatchingClasses(pattern); if (matches.isEmpty()) { config.getLogger().warn("Root pattern %s matches no classes", pattern); } else { classes.addAll(matches); } } } } return classes; }</code><technical_language>want ensure custom class names added Config null empty adding Config. Config is kinda supposed immutable (it's anymore). try return nulls empty strings necessary. Do check in line 390 add if class name is != null !empty</technical_language>

Target:
private TreeSet<Clazz> getRootClasses() { TreeSet<Clazz> classes = new TreeSet<Clazz>(); for (String rootClassPattern : ROOT_CLASS_PATTERNS) { classes.addAll(getMatchingClasses(rootClassPattern)); } for (String rootClassName : ROOT_CLASSES) { Clazz clazz = config.getClazzes().load(rootClassName); if (clazz == null) { throw new CompilerException("Root class " + rootClassName + " not found"); } classes.add(clazz); } if (config.getMainClass() != null) { Clazz clazz = config.getClazzes().load(config.getMainClass().replace('.', '/')); if (clazz == null) { throw new CompilerException("Main class " + config.getMainClass() + " not found"); } classes.add(clazz); } if (!config.getCustomIBClasses().isEmpty()) { for (String s : config.getCustomIBClasses()) { s = s.trim(); Clazz clazz = config.getClazzes().load(s.replace('.', '/')); if (clazz != null) { classes.add(clazz); } } } if (config.getForceLinkClasses().isEmpty()) { if (config.getMainClass() == null) { classes.addAll(config.getClazzes().listClasses()); } } else { for (String pattern : config.getForceLinkClasses()) { if (pattern == null || pattern.trim().isEmpty()) { continue; } pattern = pattern.trim(); if (pattern.indexOf('*') == -1) { Clazz clazz = config.getClazzes().load(pattern.replace('.', '/')); if (clazz == null) { throw new CompilerException("Root class " + pattern + " not found"); } classes.add(clazz); } else { Collection<Clazz> matches = getMatchingClasses(pattern); if (matches.isEmpty()) { config.getLogger().warn("Root pattern %s matches no classes", pattern); } else { classes.addAll(matches); } } } } return classes; }