Program: 18378
Project: 18378
Buggy source:
public void run(String[] args){
  cmd.parseCmdLineArguments(args);
  compositionRules=new ArrayList<CompositionRule>();
  if (cmd.lifting) {
    if (cmd.lifting_language.equals("String_Node_Str")) {
      compositionRules.add(new CRuntimeReplacement());
      compositionRules.add(new CRuntimeFunctionRefinement());
      subtreeRewriterC=new CRuntimeSubtreeIntegration();
    }
 else     if (cmd.lifting_language.equals("String_Node_Str")) {
      compositionRules.add(new JavaRuntimeReplacement());
      compositionRules.add(new JavaRuntimeFunctionRefinement());
      subtreeRewriterJava=new JavaRuntimeSubtreeIntegration();
    }
 else {
      throw new InternalError("String_Node_Str" + cmd.lifting_language + "String_Node_Str");
    }
  }
 else {
    compositionRules.add(new Replacement());
    compositionRules.add(new JavaMethodOverriding());
  }
  compositionRules.add(new StringConcatenation());
  compositionRules.add(new ImplementsListMerging());
  compositionRules.add(new CSharpMethodOverriding());
  compositionRules.add(new ConstructorConcatenation());
  compositionRules.add(new ModifierListSpecialization());
  compositionRules.add(new FieldOverriding());
  compositionRules.add(new ExpansionOverriding());
  compositionRules.add(new CompositionError());
  try {
    try {
      fileLoader.loadFiles(cmd.equationFileName,cmd.equationBaseDirectoryName,cmd.isAheadEquationFile);
    }
 catch (    cide.gparser.ParseException e1) {
      System.out.println("String_Node_Str");
      fireParseErrorOccured(e1);
      e1.printStackTrace();
    }
    String outputDir=cmd.equationBaseDirectoryName;
    if (cmd.outputDirectoryName != null)     outputDir=cmd.outputDirectoryName;
    if (outputDir.endsWith(File.separator))     outputDir=outputDir.substring(0,outputDir.length() - 1);
    featureVisitor.setWorkingDir(outputDir);
    featureVisitor.setExpressionName(cmd.equationFileName);
    for (    ArtifactBuilderInterface builder : getArtifactBuilders()) {
      LinkedList<FSTNonTerminal> features=builder.getFeatures();
      if (cmd.isCount && (builder instanceof JavaBuilder || builder instanceof CApproxBuilder)) {
        Counter counter=new Counter();
        for (        FSTNonTerminal feature : features) {
          counter.collect(feature);
        }
        if (features.size() > 0)         counter.writeFile(new File(cmd.equationFileName + "String_Node_Str"));
      }
      for (      FSTNonTerminal feature : features) {
        meta.addFeature(feature.getName());
      }
      FSTNode composition=compose(features);
      try {
        featureVisitor.visit((FSTNonTerminal)composition);
      }
 catch (      PrintVisitorException e) {
        e.printStackTrace();
      }
    }
    setFstnodes(AbstractFSTParser.fstnodes);
    try {
      String exp=new File(cmd.equationFileName).getName();
      exp=exp.substring(0,exp.length() - 4);
      meta.saveToFile(outputDir + File.separator + "String_Node_Str");
      if (cmd.lifting) {
        File cnfFile=new File(cmd.equationBaseDirectoryName,"String_Node_Str");
        System.err.println("String_Node_Str" + cnfFile.getAbsolutePath());
        if (cmd.lifting_language.equals("String_Node_Str")) {
          new CRuntimeFeatureSelection(meta,cnfFile).saveTo(outputDir + File.separator + "String_Node_Str");
        }
 else         if (cmd.lifting_language.equals("String_Node_Str")) {
          new JavaRuntimeFeatureSelection(meta,cnfFile).saveTo(outputDir + File.separator);
        }
      }
    }
 catch (    IOException e) {
      e.printStackTrace();
    }
  }
 catch (  FileNotFoundException e1) {
  }
}

Fixed version (ground truth):
public void run(String[] args){
  meta.clearFeatures();
  cmd.parseCmdLineArguments(args);
  compositionRules=new ArrayList<CompositionRule>();
  if (cmd.lifting) {
    if (cmd.lifting_language.equals("String_Node_Str")) {
      compositionRules.add(new CRuntimeReplacement());
      compositionRules.add(new CRuntimeFunctionRefinement());
      subtreeRewriterC=new CRuntimeSubtreeIntegration();
    }
 else     if (cmd.lifting_language.equals("String_Node_Str")) {
      compositionRules.add(new JavaRuntimeReplacement());
      compositionRules.add(new JavaRuntimeFunctionRefinement());
      subtreeRewriterJava=new JavaRuntimeSubtreeIntegration();
    }
 else {
      throw new InternalError("String_Node_Str" + cmd.lifting_language + "String_Node_Str");
    }
  }
 else {
    compositionRules.add(new Replacement());
    compositionRules.add(new JavaMethodOverriding());
  }
  compositionRules.add(new StringConcatenation());
  compositionRules.add(new ImplementsListMerging());
  compositionRules.add(new CSharpMethodOverriding());
  compositionRules.add(new ConstructorConcatenation());
  compositionRules.add(new ModifierListSpecialization());
  compositionRules.add(new FieldOverriding());
  compositionRules.add(new ExpansionOverriding());
  compositionRules.add(new CompositionError());
  try {
    try {
      fileLoader.loadFiles(cmd.equationFileName,cmd.equationBaseDirectoryName,cmd.isAheadEquationFile);
    }
 catch (    cide.gparser.ParseException e1) {
      System.out.println("String_Node_Str");
      fireParseErrorOccured(e1);
      e1.printStackTrace();
    }
    String outputDir=cmd.equationBaseDirectoryName;
    if (cmd.outputDirectoryName != null)     outputDir=cmd.outputDirectoryName;
    if (outputDir.endsWith(File.separator))     outputDir=outputDir.substring(0,outputDir.length() - 1);
    featureVisitor.setWorkingDir(outputDir);
    featureVisitor.setExpressionName(cmd.equationFileName);
    for (    ArtifactBuilderInterface builder : getArtifactBuilders()) {
      LinkedList<FSTNonTerminal> features=builder.getFeatures();
      if (cmd.isCount && (builder instanceof JavaBuilder || builder instanceof CApproxBuilder)) {
        Counter counter=new Counter();
        for (        FSTNonTerminal feature : features) {
          counter.collect(feature);
        }
        if (features.size() > 0)         counter.writeFile(new File(cmd.equationFileName + "String_Node_Str"));
      }
      for (      FSTNonTerminal feature : features) {
        meta.addFeature(feature.getName());
      }
      FSTNode composition=compose(features);
      try {
        featureVisitor.visit((FSTNonTerminal)composition);
      }
 catch (      PrintVisitorException e) {
        e.printStackTrace();
      }
    }
    setFstnodes(AbstractFSTParser.fstnodes);
    try {
      String exp=new File(cmd.equationFileName).getName();
      exp=exp.substring(0,exp.length() - 4);
      meta.saveToFile(outputDir + File.separator + "String_Node_Str");
      if (cmd.lifting) {
        File cnfFile=new File(cmd.equationBaseDirectoryName,"String_Node_Str");
        System.err.println("String_Node_Str" + cnfFile.getAbsolutePath());
        if (cmd.lifting_language.equals("String_Node_Str")) {
          new CRuntimeFeatureSelection(meta,cnfFile).saveTo(outputDir + File.separator + "String_Node_Str");
        }
 else         if (cmd.lifting_language.equals("String_Node_Str")) {
          new JavaRuntimeFeatureSelection(meta,cnfFile).saveTo(outputDir + File.separator);
        }
      }
    }
 catch (    IOException e) {
      e.printStackTrace();
    }
  }
 catch (  FileNotFoundException e1) {
  }
}