Program: 164717
Project: 164717
Buggy source:
@SuppressWarnings({"String_Node_Str","String_Node_Str"}) private void addMappingsFromTypeParametersToTypeArguments(@Nonnull Class<?> rawType,@Nonnull ParameterizedType genericType){
  String ownerTypeDesc=getOwnerClassDesc(rawType);
  TypeVariable<?>[] typeParameters=rawType.getTypeParameters();
  Type[] typeArguments=genericType.getActualTypeArguments();
  int n=typeParameters.length;
  for (int i=0; i < n; i++) {
    TypeVariable<?> typeParam=typeParameters[i];
    String typeVarName=typeParam.getName();
    if (typeParametersToTypeArguments.containsKey(ownerTypeDesc + ':' + typeVarName)) {
      continue;
    }
    Type typeArg=typeArguments[i];
    Type mappedTypeArg;
    String mappedTypeArgName=null;
    if (typeArg instanceof Class<?>) {
      mappedTypeArg=typeArg;
      if (withSignatures) {
        mappedTypeArgName='L' + getOwnerClassDesc((Class<?>)typeArg);
      }
    }
 else     if (typeArg instanceof TypeVariable<?>) {
      mappedTypeArg=typeArg;
      if (withSignatures) {
        TypeVariable<?> typeVar=(TypeVariable<?>)typeArg;
        String ownerClassDesc=getOwnerClassDesc(typeVar);
        String intermediateTypeArg=ownerClassDesc + "String_Node_Str" + typeVar.getName();
        mappedTypeArgName=typeParametersToTypeArgumentNames.get(intermediateTypeArg);
      }
    }
 else     if (typeArg instanceof ParameterizedType) {
      mappedTypeArg=typeArg;
      if (withSignatures) {
        Class<?> classType=getClassType(typeArg);
        mappedTypeArgName='L' + getOwnerClassDesc(classType);
      }
    }
 else     if (typeArg instanceof GenericArrayType) {
      mappedTypeArg=typeArg;
      if (withSignatures) {
        Type componentType=((GenericArrayType)typeArg).getGenericComponentType();
        Class<?> classType=getClassType(componentType);
        mappedTypeArgName="String_Node_Str" + getOwnerClassDesc(classType);
      }
    }
 else {
      mappedTypeArg=typeParam.getBounds()[0];
      if (withSignatures) {
        Class<?> classType=getClassType(mappedTypeArg);
        mappedTypeArgName='L' + getOwnerClassDesc(classType);
      }
    }
    addTypeMapping(ownerTypeDesc,typeVarName,mappedTypeArg,mappedTypeArgName);
  }
}

Fixed version (ground truth):
@SuppressWarnings({"String_Node_Str","String_Node_Str"}) private void addMappingsFromTypeParametersToTypeArguments(@Nonnull Class<?> rawType,@Nonnull ParameterizedType genericType){
  String ownerTypeDesc=getOwnerClassDesc(rawType);
  TypeVariable<?>[] typeParameters=rawType.getTypeParameters();
  Type[] typeArguments=genericType.getActualTypeArguments();
  int n=typeParameters.length;
  for (int i=0; i < n; i++) {
    TypeVariable<?> typeParam=typeParameters[i];
    String typeVarName=typeParam.getName();
    if (typeParametersToTypeArguments.containsKey(ownerTypeDesc + ':' + typeVarName)) {
      continue;
    }
    Type typeArg=typeArguments[i];
    Type mappedTypeArg;
    String mappedTypeArgName=null;
    if (typeArg instanceof Class<?>) {
      mappedTypeArg=typeArg;
      if (withSignatures) {
        Class<?> classArg=(Class<?>)typeArg;
        String ownerClassDesc=getOwnerClassDesc(classArg);
        mappedTypeArgName=classArg.isArray() ? ownerClassDesc : 'L' + ownerClassDesc;
      }
    }
 else     if (typeArg instanceof TypeVariable<?>) {
      mappedTypeArg=typeArg;
      if (withSignatures) {
        TypeVariable<?> typeVar=(TypeVariable<?>)typeArg;
        String ownerClassDesc=getOwnerClassDesc(typeVar);
        String intermediateTypeArg=ownerClassDesc + "String_Node_Str" + typeVar.getName();
        mappedTypeArgName=typeParametersToTypeArgumentNames.get(intermediateTypeArg);
      }
    }
 else     if (typeArg instanceof ParameterizedType) {
      mappedTypeArg=typeArg;
      if (withSignatures) {
        Class<?> classType=getClassType(typeArg);
        mappedTypeArgName='L' + getOwnerClassDesc(classType);
      }
    }
 else     if (typeArg instanceof GenericArrayType) {
      mappedTypeArg=typeArg;
      if (withSignatures) {
        mappedTypeArgName=getMappedTypeArgName((GenericArrayType)typeArg);
      }
    }
 else {
      mappedTypeArg=typeParam.getBounds()[0];
      if (withSignatures) {
        Class<?> classType=getClassType(mappedTypeArg);
        mappedTypeArgName='L' + getOwnerClassDesc(classType);
      }
    }
    addTypeMapping(ownerTypeDesc,typeVarName,mappedTypeArg,mappedTypeArgName);
  }
}