Program: 7255
Project: 7255
Buggy source:
/** 
 * Overridden checkout function This is the real invocation of this plugin. Currently, we will do a project info and determine the true nature of the project Subsequent to that we will run a view project command and cache the information on each member, so that we can execute project checkout commands.  This obviously eliminates the need for a sandbox and can wily nilly delete the workspace directory as needed
 * @see hudson.scm.SCM#checkout(hudson.model.AbstractBuild,hudson.Launcher,hudson.FilePath,hudson.model.BuildListener,java.io.File)
 */
@Override public boolean checkout(AbstractBuild<?,?> build,Launcher launcher,FilePath workspace,BuildListener listener,File changeLogFile) throws IOException, InterruptedException {
  logger.info("String_Node_Str");
  APISession api=createAPISession();
  PrintWriter writer=new PrintWriter(new FileWriter(changeLogFile));
  try {
    listener.getLogger().println("String_Node_Str" + configPath);
    initializeCMProject(api);
    listener.getLogger().println("String_Node_Str" + configPath);
    initializeCMProjectMembers(api);
    AbstractBuild<?,?> previousBuild=build.getPreviousSuccessfulBuild();
    if (null == previousBuild) {
      logger.info("String_Node_Str");
    }
    for (AbstractBuild<?,?> b=build.getPreviousSuccessfulBuild(); null != b; b=b.getPreviousSuccessfulBuild()) {
      if (getViewProjectResponseFile(b).exists()) {
        logger.info("String_Node_Str" + b.getNumber());
        previousBuild=b;
        break;
      }
    }
    Object obj=getIntegrityCMProjectState(previousBuild);
    if (obj instanceof IntegrityCMProject && null != obj) {
      IntegrityCMProject oldProject=(IntegrityCMProject)obj;
      siProject.compareBaseline(oldProject);
    }
 else {
      logger.info("String_Node_Str");
    }
    IntegrityCheckoutTask coTask=null;
    if (null == obj) {
      coTask=new IntegrityCheckoutTask(this,siProject,true,listener);
    }
 else {
      coTask=new IntegrityCheckoutTask(this,siProject,cleanCopy,listener);
    }
    if (workspace.act(coTask)) {
      listener.getLogger().println("String_Node_Str");
      printViewProjectResponse(build,listener,siProject);
      listener.getLogger().println("String_Node_Str");
      writer.println(siProject.getChangeLog(String.valueOf(build.getNumber()),api));
      listener.getLogger().println("String_Node_Str" + changeLogFile.getAbsolutePath());
    }
 else {
      return false;
    }
  }
 catch (  APIException aex) {
    logger.error("String_Node_Str");
    listener.getLogger().println("String_Node_Str");
    ExceptionHandler eh=new ExceptionHandler(aex);
    logger.error(eh.getMessage());
    listener.getLogger().println(eh.getMessage());
    logger.info(eh.getCommand() + "String_Node_Str" + eh.getExitCode());
    listener.getLogger().println(eh.getCommand() + "String_Node_Str" + eh.getExitCode());
    aex.printStackTrace();
    return false;
  }
 finally {
    writer.close();
    api.Terminate();
  }
  return true;
}

Fixed version (ground truth):
/** 
 * Overridden checkout function This is the real invocation of this plugin. Currently, we will do a project info and determine the true nature of the project Subsequent to that we will run a view project command and cache the information on each member, so that we can execute project checkout commands.  This obviously eliminates the need for a sandbox and can wily nilly delete the workspace directory as needed
 * @see hudson.scm.SCM#checkout(hudson.model.AbstractBuild,hudson.Launcher,hudson.FilePath,hudson.model.BuildListener,java.io.File)
 */
@Override public boolean checkout(AbstractBuild<?,?> build,Launcher launcher,FilePath workspace,BuildListener listener,File changeLogFile) throws IOException, InterruptedException {
  logger.info("String_Node_Str");
  APISession api=createAPISession();
  if (null == api) {
    listener.getLogger().println("String_Node_Str");
    return false;
  }
  PrintWriter writer=new PrintWriter(new FileWriter(changeLogFile));
  try {
    listener.getLogger().println("String_Node_Str" + configPath);
    initializeCMProject(api);
    listener.getLogger().println("String_Node_Str" + configPath);
    initializeCMProjectMembers(api);
    AbstractBuild<?,?> previousBuild=build.getPreviousSuccessfulBuild();
    if (null == previousBuild) {
      logger.info("String_Node_Str");
    }
    for (AbstractBuild<?,?> b=build.getPreviousSuccessfulBuild(); null != b; b=b.getPreviousSuccessfulBuild()) {
      if (getViewProjectResponseFile(b).exists()) {
        logger.info("String_Node_Str" + b.getNumber());
        previousBuild=b;
        break;
      }
    }
    Object obj=getIntegrityCMProjectState(previousBuild);
    if (obj instanceof IntegrityCMProject && null != obj) {
      IntegrityCMProject oldProject=(IntegrityCMProject)obj;
      siProject.compareBaseline(oldProject);
    }
 else {
      logger.info("String_Node_Str");
    }
    IntegrityCheckoutTask coTask=null;
    if (null == obj) {
      coTask=new IntegrityCheckoutTask(this,siProject,true,listener);
    }
 else {
      coTask=new IntegrityCheckoutTask(this,siProject,cleanCopy,listener);
    }
    if (workspace.act(coTask)) {
      listener.getLogger().println("String_Node_Str");
      printViewProjectResponse(build,listener,siProject);
      listener.getLogger().println("String_Node_Str");
      writer.println(siProject.getChangeLog(String.valueOf(build.getNumber()),api));
      listener.getLogger().println("String_Node_Str" + changeLogFile.getAbsolutePath());
    }
 else {
      return false;
    }
  }
 catch (  APIException aex) {
    logger.error("String_Node_Str");
    listener.getLogger().println("String_Node_Str");
    ExceptionHandler eh=new ExceptionHandler(aex);
    logger.error(eh.getMessage());
    listener.getLogger().println(eh.getMessage());
    logger.info(eh.getCommand() + "String_Node_Str" + eh.getExitCode());
    listener.getLogger().println(eh.getCommand() + "String_Node_Str" + eh.getExitCode());
    aex.printStackTrace();
    return false;
  }
 finally {
    writer.close();
    api.Terminate();
  }
  return true;
}