Program: 91181
Project: 91181
Buggy source:
public void loadExtendsOrImplements(List<ClassOrInterfaceType> extendsList){
  if (extendsList != null) {
    Symbol<?> superSym=table.findSymbol("String_Node_Str");
    Map<String,SymbolType> typeParams=null;
    Scope superScope=null;
    if (superSym != null) {
      superScope=superSym.getInnerScope();
      if (superScope != null) {
        typeParams=superScope.getTypeParams();
      }
    }
    for (    ClassOrInterfaceType type : extendsList) {
      String name=type.getName();
      ClassOrInterfaceType scope=type.getScope();
      if (scope != null) {
        name=scope.toString() + "String_Node_Str" + name;
      }
      Symbol<?> s=table.findSymbol(name,ReferenceType.TYPE);
      if (s != null) {
        Scope inner=s.getInnerScope();
        Object location=s.getLocation();
        if (location != null && location instanceof TypeDeclaration) {
          ((TypeDeclaration)location).accept(this,inner);
          List<SymbolType> parameters=s.getType().getParameterizedTypes();
          if (parameters != null && typeParams != null) {
            List<Symbol<?>> symbols=inner.getSymbolsByType(ReferenceType.VARIABLE);
            table.pushScope(superScope);
            for (            Symbol<?> sym : symbols) {
              String symName=sym.getName();
              if (!"String_Node_Str".equals(symName) && !"String_Node_Str".equals(symName)) {
                SymbolType refactorized=sym.getType().refactor(typeParams);
                table.pushSymbol(symName,ReferenceType.VARIABLE,refactorized,sym.getLocation());
              }
            }
            table.popScope(true);
          }
        }
 else {
          Class<?> clazz=s.getType().getClazz();
          Set<Field> fields=FieldInspector.getNonPrivateFields(clazz);
          List<SymbolType> params=table.getType("String_Node_Str").getParameterizedTypes();
          for (          Field field : fields) {
            try {
              Map<String,SymbolType> typeMapping=null;
              if (typeParams != null) {
                typeMapping=new HashMap<String,SymbolType>(typeParams);
                GenericBuilderFromGenericClasses builder=new GenericBuilderFromGenericClasses(field.getDeclaringClass(),params);
                builder.build(typeMapping);
              }
              table.pushSymbol(field.getName(),ReferenceType.VARIABLE,SymbolType.valueOf(field.getGenericType(),typeMapping),null,true);
            }
 catch (            InvalidTypeException e) {
              throw new RuntimeException(e);
            }
          }
        }
      }
    }
  }
}

Fixed version (ground truth):
public void loadExtendsOrImplements(List<ClassOrInterfaceType> extendsList){
  if (extendsList != null) {
    Symbol<?> superSym=table.findSymbol("String_Node_Str");
    Map<String,SymbolType> typeParams=null;
    Scope superScope=null;
    if (superSym != null) {
      superScope=superSym.getInnerScope();
      if (superScope != null) {
        typeParams=superScope.getTypeParams();
      }
    }
    for (    ClassOrInterfaceType type : extendsList) {
      String name=type.getName();
      ClassOrInterfaceType scope=type.getScope();
      if (scope != null) {
        name=scope.toString() + "String_Node_Str" + name;
      }
      Symbol<?> s=table.findSymbol(name,ReferenceType.TYPE);
      if (s != null) {
        Scope inner=s.getInnerScope();
        Object location=s.getLocation();
        if (location != null && location instanceof TypeDeclaration) {
          ((TypeDeclaration)location).accept(this,inner);
          List<SymbolType> parameters=s.getType().getParameterizedTypes();
          if (parameters != null && typeParams != null) {
            List<Symbol<?>> symbols=inner.getSymbolsByType(ReferenceType.VARIABLE);
            table.pushScope(superScope);
            for (            Symbol<?> sym : symbols) {
              String symName=sym.getName();
              if (!"String_Node_Str".equals(symName) && !"String_Node_Str".equals(symName)) {
                SymbolType refactorized=sym.getType().refactor(typeParams);
                table.pushSymbol(symName,ReferenceType.VARIABLE,refactorized,sym.getLocation());
              }
            }
            table.popScope(true);
          }
        }
 else {
          Class<?> clazz=s.getType().getClazz();
          loadFieldsFromClass(clazz,typeParams);
        }
      }
 else {
        Class<?> clazz=null;
        if (type.getParentNode() instanceof ObjectCreationExpr) {
          ObjectCreationExpr parent=(ObjectCreationExpr)type.getParentNode();
          clazz=parent.getSymbolData().getClazz().getSuperclass();
        }
 else {
          SymbolType stype=ASTSymbolTypeResolver.getInstance().valueOf(type);
          clazz=stype.getClazz();
        }
        loadFieldsFromClass(clazz,typeParams);
      }
    }
  }
}