Program: 185323
Project: 185323
Buggy source:
private GroovyClassLoader[] getProjectGroovyClassLoaders(CompilerConfiguration compilerConfiguration){
  String projectName=compilerOptions.groovyProjectName;
  IProject project=findProject(projectName);
  try {
    IJavaProject javaProject=JavaCore.create(project);
    IClasspathEntry[] classpathEntries=javaProject.exists() ? javaProject.getResolvedClasspath(true) : new IClasspathEntry[0];
    Map.Entry<IClasspathEntry[],GroovyClassLoader[]> entry=projectClassLoaderCache.computeIfAbsent(projectName,key -> {
      Set<String> classPaths=new LinkedHashSet<>(), xformPaths=new LinkedHashSet<>();
      if (javaProject.exists())       calculateClasspath(javaProject,classPaths,xformPaths);
      if (GroovyLogManager.manager.hasLoggers()) {
        GroovyLogManager.manager.log(TraceCategory.AST_TRANSFORM,"String_Node_Str" + String.join(File.pathSeparator,xformPaths));
      }
      return new java.util.AbstractMap.SimpleEntry<>(classpathEntries,new GroovyClassLoader[]{new GrapeAwareGroovyClassLoader(newClassLoader(classPaths,null),compilerConfiguration),new GroovyClassLoader(newClassLoader(xformPaths,GroovyParser.class.getClassLoader()))});
    }
);
    if (Arrays.equals(classpathEntries,entry.getKey())) {
      return entry.getValue();
    }
 else {
      projectClassLoaderCache.remove(projectName);
      return getProjectGroovyClassLoaders(compilerConfiguration);
    }
  }
 catch (  Exception e) {
    throw new RuntimeException("String_Node_Str" + projectName + "String_Node_Str",e);
  }
}

Fixed version (ground truth):
private GroovyClassLoader[] getProjectGroovyClassLoaders(CompilerConfiguration compilerConfiguration){
  String projectName=compilerOptions.groovyProjectName;
  IProject project=findProject(projectName);
  try {
    IJavaProject javaProject=JavaCore.create(project);
    IClasspathEntry[] classpathEntries=javaProject.exists() ? javaProject.getResolvedClasspath(true) : new IClasspathEntry[0];
    Map.Entry<IClasspathEntry[],GroovyClassLoader[]> entry=projectClassLoaderCache.computeIfAbsent(projectName,key -> {
      Set<String> classPaths=new LinkedHashSet<>(), xformPaths=new LinkedHashSet<>();
      if (javaProject.exists())       calculateClasspath(javaProject,classPaths,xformPaths);
      if (GroovyLogManager.manager.hasLoggers()) {
        GroovyLogManager.manager.log(TraceCategory.AST_TRANSFORM,"String_Node_Str" + String.join(File.pathSeparator,xformPaths));
      }
      ClassLoader parentClassLoader=null;
      if (classPaths.stream().anyMatch(path -> path.endsWith("String_Node_Str"))) {
        parentClassLoader=GroovyParser.class.getClassLoader();
      }
      return new java.util.AbstractMap.SimpleEntry<>(classpathEntries,new GroovyClassLoader[]{new GrapeAwareGroovyClassLoader(newClassLoader(classPaths,parentClassLoader),compilerConfiguration),new GroovyClassLoader(newClassLoader(xformPaths,GroovyParser.class.getClassLoader()))});
    }
);
    if (Arrays.equals(classpathEntries,entry.getKey())) {
      return entry.getValue();
    }
 else {
      projectClassLoaderCache.remove(projectName);
      return getProjectGroovyClassLoaders(compilerConfiguration);
    }
  }
 catch (  Exception e) {
    throw new RuntimeException("String_Node_Str" + projectName + "String_Node_Str",e);
  }
}