Program: 82978
Project: 82978
Buggy source:
/** 
 * @param fullInterfaceName Name of the fully-qualified Java class to createas an Application.
 * @param outDir Where to put the output files
 * @param eclipse The name of a project to attach a .launch config to
 * @param overwrite Overwrite an existing files if they exist.
 * @param ignore Ignore existing files if they exist.
 * @throws IOException
 */
static void createLocalizable(String fullInterfaceName,File outDir,String eclipse,boolean createMessagesInterface,boolean overwrite,boolean ignore) throws IOException {
  String installPath=Utility.getInstallPath();
  String gwtUserPath=installPath + '/' + "String_Node_Str";
  String gwtDevPath=installPath + '/' + Utility.getDevJarName();
  boolean isWindows=gwtDevPath.substring(gwtDevPath.lastIndexOf('/') + 1).indexOf("String_Node_Str") >= 0;
  String basePathEnv;
  if (!new File(installPath).isAbsolute()) {
    if (isWindows) {
      basePathEnv="String_Node_Str";
    }
 else {
      basePathEnv="String_Node_Str";
    }
  }
 else {
    basePathEnv="String_Node_Str";
  }
  int pos=fullInterfaceName.lastIndexOf('.');
  String clientPackageName=fullInterfaceName.substring(0,pos);
  String interfaceName=fullInterfaceName.substring(pos + 1);
  pos=clientPackageName.lastIndexOf('.');
  File clientDir=Utility.getDirectory(outDir,"String_Node_Str",true);
  if (pos >= 0) {
    String clientPackage=clientPackageName.replace('.','/');
    clientDir=Utility.getDirectory(clientDir,clientPackage,true);
  }
  Map<String,String> replacements=new HashMap<String,String>();
  replacements.put("String_Node_Str",fullInterfaceName);
  replacements.put("String_Node_Str",interfaceName);
  replacements.put("String_Node_Str",basePathEnv + gwtUserPath);
  replacements.put("String_Node_Str",basePathEnv + gwtDevPath);
  replacements.put("String_Node_Str","String_Node_Str");
  replacements.put("String_Node_Str","String_Node_Str");
  if (createMessagesInterface) {
    replacements.put("String_Node_Str","String_Node_Str");
  }
 else {
    replacements.put("String_Node_Str","String_Node_Str");
  }
  if (createMessagesInterface) {
    File i18nMessageProperties=Utility.createNormalFile(clientDir,interfaceName + "String_Node_Str",overwrite,ignore);
    if (i18nMessageProperties != null) {
      String out=Utility.getFileFromClassPath(PACKAGE_PATH + "String_Node_Str");
      Utility.writeTemplateFile(i18nMessageProperties,out,replacements);
    }
  }
 else {
    File i18nConstantProperties=Utility.createNormalFile(clientDir,interfaceName + "String_Node_Str",overwrite,ignore);
    if (i18nConstantProperties != null) {
      String out=Utility.getFileFromClassPath(PACKAGE_PATH + "String_Node_Str");
      Utility.writeTemplateFile(i18nConstantProperties,out,replacements);
    }
  }
  if (eclipse != null) {
    replacements.put("String_Node_Str",eclipse);
    File updateLaunchConfig=Utility.createNormalFile(outDir,interfaceName + "String_Node_Str" + "String_Node_Str",overwrite,ignore);
    if (updateLaunchConfig != null) {
      String out=Utility.getFileFromClassPath(PACKAGE_PATH + "String_Node_Str");
      Utility.writeTemplateFile(updateLaunchConfig,out,replacements);
    }
  }
  String extension;
  if (isWindows) {
    extension="String_Node_Str";
  }
 else {
    extension="String_Node_Str";
  }
  File gwti18n=Utility.createNormalFile(outDir,interfaceName + "String_Node_Str" + extension,overwrite,ignore);
  if (gwti18n != null) {
    String out=Utility.getFileFromClassPath(PACKAGE_PATH + "String_Node_Str" + extension+ "String_Node_Str");
    Utility.writeTemplateFile(gwti18n,out,replacements);
    if (extension.length() == 0) {
      Runtime.getRuntime().exec("String_Node_Str" + gwti18n.getAbsolutePath());
    }
  }
}

Fixed version (ground truth):
/** 
 * @param fullInterfaceName Name of the fully-qualified Java class to createas an Application.
 * @param outDir Where to put the output files
 * @param eclipse The name of a project to attach a .launch config to
 * @param overwrite Overwrite an existing files if they exist.
 * @param ignore Ignore existing files if they exist.
 * @param interfaceToCreate the class instance to create - Constants,ConstantsWithLookup, or Messages
 * @throws IOException
 */
static void createLocalizable(String fullInterfaceName,File outDir,String eclipse,boolean overwrite,boolean ignore,Class<? extends Localizable> interfaceToCreate) throws IOException {
  String installPath=Utility.getInstallPath();
  String gwtUserPath=installPath + '/' + "String_Node_Str";
  String gwtDevPath=installPath + '/' + Utility.getDevJarName();
  boolean isWindows=gwtDevPath.substring(gwtDevPath.lastIndexOf('/') + 1).indexOf("String_Node_Str") >= 0;
  String basePathEnv;
  if (!new File(installPath).isAbsolute()) {
    if (isWindows) {
      basePathEnv="String_Node_Str";
    }
 else {
      basePathEnv="String_Node_Str";
    }
  }
 else {
    basePathEnv="String_Node_Str";
  }
  int pos=fullInterfaceName.lastIndexOf('.');
  String clientPackageName=fullInterfaceName.substring(0,pos);
  String interfaceName=fullInterfaceName.substring(pos + 1);
  pos=clientPackageName.lastIndexOf('.');
  File clientDir=Utility.getDirectory(outDir,"String_Node_Str",true);
  if (pos >= 0) {
    String clientPackage=clientPackageName.replace('.','/');
    clientDir=Utility.getDirectory(clientDir,clientPackage,true);
  }
  Map<String,String> replacements=new HashMap<String,String>();
  replacements.put("String_Node_Str",fullInterfaceName);
  replacements.put("String_Node_Str",interfaceName);
  replacements.put("String_Node_Str",basePathEnv + gwtUserPath);
  replacements.put("String_Node_Str",basePathEnv + gwtDevPath);
  replacements.put("String_Node_Str","String_Node_Str");
  replacements.put("String_Node_Str","String_Node_Str");
  String templateData=null;
  if (Messages.class == interfaceToCreate) {
    replacements.put("String_Node_Str","String_Node_Str");
    templateData=Utility.getFileFromClassPath(PACKAGE_PATH + "String_Node_Str");
  }
 else {
    if (ConstantsWithLookup.class == interfaceToCreate) {
      replacements.put("String_Node_Str","String_Node_Str");
    }
 else     if (Constants.class == interfaceToCreate) {
      replacements.put("String_Node_Str","String_Node_Str");
    }
 else {
      throw new RuntimeException("String_Node_Str" + interfaceToCreate.getName());
    }
    templateData=Utility.getFileFromClassPath(PACKAGE_PATH + "String_Node_Str");
  }
  File i18nPropertiesFile=Utility.createNormalFile(clientDir,interfaceName + "String_Node_Str",overwrite,ignore);
  if (i18nPropertiesFile != null && templateData != null) {
    Utility.writeTemplateFile(i18nPropertiesFile,templateData,replacements);
  }
  if (eclipse != null) {
    replacements.put("String_Node_Str",eclipse);
    File updateLaunchConfig=Utility.createNormalFile(outDir,interfaceName + "String_Node_Str" + "String_Node_Str",overwrite,ignore);
    if (updateLaunchConfig != null) {
      String out=Utility.getFileFromClassPath(PACKAGE_PATH + "String_Node_Str");
      Utility.writeTemplateFile(updateLaunchConfig,out,replacements);
    }
  }
  String extension;
  if (isWindows) {
    extension="String_Node_Str";
  }
 else {
    extension="String_Node_Str";
  }
  File gwti18n=Utility.createNormalFile(outDir,interfaceName + "String_Node_Str" + extension,overwrite,ignore);
  if (gwti18n != null) {
    String out=Utility.getFileFromClassPath(PACKAGE_PATH + "String_Node_Str" + extension+ "String_Node_Str");
    Utility.writeTemplateFile(gwti18n,out,replacements);
    if (extension.length() == 0) {
      Runtime.getRuntime().exec("String_Node_Str" + gwti18n.getAbsolutePath());
    }
  }
}