Program: 38404
Project: 38404
Buggy source:
/** 
 * Set up the set of classes loaded by this object.
 */
private void loadAllClasses(Collection<ModuleEntry> moduleEntries){
  for (Iterator<ModuleEntry> it=moduleEntries.iterator(); it.hasNext(); ) {
    ModuleEntry entry=it.next();
    if (!entry.isClassFile()) {
      continue;
    }
    String className=entry.getClassName().replace('.','/');
    if (DEBUG_LEVEL > 0) {
      System.err.println("String_Node_Str" + className);
    }
    if (exclusions != null && exclusions.contains(className)) {
      if (DEBUG_LEVEL > 0) {
        System.err.println("String_Node_Str" + className);
      }
      continue;
    }
    ShrikeClassReaderHandle reader=new ShrikeClassReaderHandle(entry);
    className="String_Node_Str" + className;
    if (DEBUG_LEVEL > 0) {
      System.err.println("String_Node_Str" + className);
    }
    try {
      TypeName T=TypeName.string2TypeName(className);
      if (loadedClasses.get(T) != null) {
        Warnings.add(MultipleImplementationsWarning.create(className));
      }
 else       if (parent != null && parent.lookupClass(T) != null) {
        Warnings.add(MultipleImplementationsWarning.create(className));
      }
 else {
        ShrikeClass klass=new ShrikeClass(reader,this,cha);
        if (klass.getReference().getName().equals(T)) {
          loadedClasses.put(T,klass);
          if (DEBUG_LEVEL > 1) {
            System.err.println("String_Node_Str" + T + "String_Node_Str");
          }
        }
 else {
          Warnings.add(InvalidClassFile.create(className));
        }
      }
    }
 catch (    InvalidClassFileException e) {
      if (DEBUG_LEVEL > 0) {
        System.err.println("String_Node_Str" + className + "String_Node_Str");
      }
      Warnings.add(InvalidClassFile.create(className));
    }
  }
}

Fixed version (ground truth):
/** 
 * Set up the set of classes loaded by this object.
 */
private void loadAllClasses(Collection<ModuleEntry> moduleEntries,Map<String,Object> fileContents){
  for (Iterator<ModuleEntry> it=moduleEntries.iterator(); it.hasNext(); ) {
    ModuleEntry entry=it.next();
    if (!entry.isClassFile()) {
      continue;
    }
    String className=entry.getClassName().replace('.','/');
    if (DEBUG_LEVEL > 0) {
      System.err.println("String_Node_Str" + className);
    }
    if (exclusions != null && exclusions.contains(className)) {
      if (DEBUG_LEVEL > 0) {
        System.err.println("String_Node_Str" + className);
      }
      continue;
    }
    ShrikeClassReaderHandle entryReader=new ShrikeClassReaderHandle(entry);
    className="String_Node_Str" + className;
    if (DEBUG_LEVEL > 0) {
      System.err.println("String_Node_Str" + className);
    }
    try {
      TypeName T=TypeName.string2TypeName(className);
      if (loadedClasses.get(T) != null) {
        Warnings.add(MultipleImplementationsWarning.create(className));
      }
 else       if (parent != null && parent.lookupClass(T) != null) {
        Warnings.add(MultipleImplementationsWarning.create(className));
      }
 else {
        ShrikeClassReaderHandle reader=entryReader;
        if (fileContents != null) {
          final Object contents=fileContents.get(entry.getName());
          if (contents != null) {
            reader=new ByteArrayReaderHandle(entry,(byte[])contents);
          }
        }
        ShrikeClass tmpKlass=new ShrikeClass(reader,this,cha);
        if (tmpKlass.getReference().getName().equals(T)) {
          loadedClasses.put(T,new ShrikeClass(entryReader,this,cha));
          if (DEBUG_LEVEL > 1) {
            System.err.println("String_Node_Str" + T + "String_Node_Str");
          }
        }
 else {
          Warnings.add(InvalidClassFile.create(className));
        }
      }
    }
 catch (    InvalidClassFileException e) {
      if (DEBUG_LEVEL > 0) {
        System.err.println("String_Node_Str" + className + "String_Node_Str");
      }
      Warnings.add(InvalidClassFile.create(className));
    }
  }
}