Source:
<code>protected LauncherConfiguration call() { try { final OperatingSystem os = getOperatingSystem(); updateMessage(BundleUtils.getLabel("splash_initLauncherDirs")); final Path launcherDirectory = getLauncherDirectory(os); final Path downloadDirectory = getDownloadDirectory(launcherDirectory); final Path tempDirectory = getTempDirectory(launcherDirectory); final BaseLauncherSettings launcherSettings = getLauncherSettings(launcherDirectory); <START> new LauncherSettingsValidator().validate(launcherSettings); <END> if (launcherSettings.isSearchForLauncherUpdates()) { final boolean selfUpdaterStarted = checkForLauncherUpdates(downloadDirectory, tempDirectory, launcherSettings.isKeepDownloadedFiles()); if (selfUpdaterStarted) { logger.info("Exit old TerasologyLauncher: {}", TerasologyLauncherVersionInfo.getInstance()); return NullLauncherConfiguration.getInstance(); } } updateMessage(BundleUtils.getLabel("splash_initGameDirs")); final Path gameDirectory = getGameDirectory(os, launcherSettings.getGameDirectory()); final Path gameDataDirectory = getGameDataDirectory(os, launcherSettings.getGameDataDirectory()); final TerasologyGameVersions gameVersions = getTerasologyGameVersions(launcherDirectory, gameDirectory, launcherSettings); logger.trace("Change LauncherSettings..."); launcherSettings.setGameDirectory(gameDirectory); launcherSettings.setGameDataDirectory(gameDataDirectory); gameVersions.fixSettingsBuildVersion(launcherSettings); storeLauncherSettingsAfterInit(launcherSettings); logger.trace("Creating launcher frame..."); return new LauncherConfiguration(launcherDirectory, downloadDirectory, tempDirectory, launcherSettings, gameVersions); } catch (LauncherStartFailedException e) { logger.warn("Could not configure launcher."); } return null; }</code><technical_language>validate(...) implemented a static method? I in this setup class needs instantiated, is a) same, b) once. create rules pass hte validator instance, validator static</technical_language>

Target:
protected LauncherConfiguration call() { try { final OperatingSystem os = getOperatingSystem(); updateMessage(BundleUtils.getLabel("splash_initLauncherDirs")); final Path launcherDirectory = getLauncherDirectory(os); final Path downloadDirectory = getDownloadDirectory(launcherDirectory); final Path tempDirectory = getTempDirectory(launcherDirectory); final BaseLauncherSettings launcherSettings = getLauncherSettings(launcherDirectory); LauncherSettingsValidator.validate(launcherSettings); if (launcherSettings.isSearchForLauncherUpdates()) { final boolean selfUpdaterStarted = checkForLauncherUpdates(downloadDirectory, tempDirectory, launcherSettings.isKeepDownloadedFiles()); if (selfUpdaterStarted) { logger.info("Exit old TerasologyLauncher: {}", TerasologyLauncherVersionInfo.getInstance()); return NullLauncherConfiguration.getInstance(); } } updateMessage(BundleUtils.getLabel("splash_initGameDirs")); final Path gameDirectory = getGameDirectory(os, launcherSettings.getGameDirectory()); final Path gameDataDirectory = getGameDataDirectory(os, launcherSettings.getGameDataDirectory()); final TerasologyGameVersions gameVersions = getTerasologyGameVersions(launcherDirectory, gameDirectory, launcherSettings); logger.trace("Change LauncherSettings..."); launcherSettings.setGameDirectory(gameDirectory); launcherSettings.setGameDataDirectory(gameDataDirectory); gameVersions.fixSettingsBuildVersion(launcherSettings); storeLauncherSettingsAfterInit(launcherSettings); logger.trace("Creating launcher frame..."); return new LauncherConfiguration(launcherDirectory, downloadDirectory, tempDirectory, launcherSettings, gameVersions); } catch (LauncherStartFailedException e) { logger.warn("Could not configure launcher."); } return null; }