Program: 181109
Project: 181109
Buggy source:
private CharSequence getDecodingSourceCode(String affectationFormat,String indentation,String targetVariableName,String inputStreamVarName,Type parameterType,int recursionDepth){
  StringBuilder buffer=new StringBuilder();
  if (parameterType.getTypeKind() == TypeKind.Primitive) {
    PrimitiveType primitiveType=(PrimitiveType)parameterType;
    String primitiveName=primitiveType.getPrimitiveClass().getName();
    String valueName=inputStreamVarName + "String_Node_Str" + primitiveName.substring(0,1).toUpperCase()+ primitiveName.substring(1).toLowerCase()+ "String_Node_Str";
    buffer.append(indentation + String.format(affectationFormat,targetVariableName,valueName) + "String_Node_Str");
  }
 else   if (parameterType.getTypeKind() == TypeKind.PrimitiveWrapper) {
    PrimitiveWrapperType primitiveWrapperType=(PrimitiveWrapperType)parameterType;
    String primitiveName=primitiveWrapperType.getPrimitiveClass().getName();
    String valueName=inputStreamVarName + "String_Node_Str" + primitiveName.substring(0,1).toUpperCase()+ primitiveName.substring(1).toLowerCase()+ "String_Node_Str";
    buffer.append(indentation + String.format(affectationFormat,targetVariableName,valueName) + "String_Node_Str");
  }
 else   if (parameterType.getTypeKind() == TypeKind.Array) {
    ArrayType arrayType=(ArrayType)parameterType;
    CharSequence initValueBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth + "String_Node_Str"+ recursionDepth+ "String_Node_Str",inputStreamVarName,arrayType.getComponentType(),recursionDepth + 1);
    buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",indentation,arrayType.getComponentType(),inputStreamVarName,recursionDepth,initValueBlock,String.format(affectationFormat,targetVariableName,"String_Node_Str"),String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth),arrayType.getTypeWithNoArray(),arrayType.bracketToString().substring(2)));
  }
 else   if (parameterType.getTypeKind() == TypeKind.Enum) {
    EnumType enumType=(EnumType)parameterType;
    int nbEnumItems=enumType.getNbEnumItems();
    String enumOrdinalAsInt=inputStreamVarName + (nbEnumItems + 1 <= 256 ? "String_Node_Str" : (nbEnumItems + 1 <= 65536 ? "String_Node_Str" : "String_Node_Str"));
    buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str",indentation,recursionDepth,enumOrdinalAsInt,String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth + "String_Node_Str"+ nbEnumItems+ "String_Node_Str"+ enumType.getQualifiedClassName()+ "String_Node_Str"+ recursionDepth+ "String_Node_Str") + "String_Node_Str") + "String_Node_Str");
  }
 else   if (parameterType.getTypeKind() == TypeKind.Declared) {
    DeclaredType declaredType=(DeclaredType)parameterType;
    if (declaredType.getTypeClass() == String.class) {
      buffer.append(indentation + String.format(affectationFormat,targetVariableName,inputStreamVarName + "String_Node_Str") + "String_Node_Str");
    }
 else     if (declaredType.getTypeClass() == List.class) {
      CharSequence initValueBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth,inputStreamVarName,declaredType.getGenericArgumentTypeList().get(0),recursionDepth + 1);
      buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",indentation,toString(declaredType.getGenericArgumentTypeList().get(0)),inputStreamVarName,recursionDepth,initValueBlock,String.format(affectationFormat,targetVariableName,"String_Node_Str"),String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth)));
    }
 else     if (declaredType.getTypeClass() == Set.class) {
      CharSequence initValueBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth,inputStreamVarName,declaredType.getGenericArgumentTypeList().get(0),recursionDepth + 1);
      buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",indentation,toString(declaredType.getGenericArgumentTypeList().get(0)),inputStreamVarName,recursionDepth,initValueBlock,String.format(affectationFormat,targetVariableName,"String_Node_Str"),String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth)));
    }
 else     if (declaredType.getTypeClass() == Collection.class) {
      CharSequence initValueBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth,inputStreamVarName,declaredType.getGenericArgumentTypeList().get(0),recursionDepth + 1);
      buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",indentation,toString(declaredType.getGenericArgumentTypeList().get(0)),inputStreamVarName,recursionDepth,initValueBlock,String.format(affectationFormat,targetVariableName,"String_Node_Str"),String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth)));
    }
 else     if (declaredType.getTypeClass() == Map.class) {
      CharSequence initKeyBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth,inputStreamVarName,declaredType.getGenericArgumentTypeList().get(0),recursionDepth + 1);
      CharSequence initValueBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth,inputStreamVarName,declaredType.getGenericArgumentTypeList().get(1),recursionDepth + 1);
      buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",indentation,toString(declaredType.getGenericArgumentTypeList().get(0)),toString(declaredType.getGenericArgumentTypeList().get(1)),inputStreamVarName,recursionDepth,initKeyBlock,initValueBlock,String.format(affectationFormat,targetVariableName,"String_Node_Str"),String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth)));
    }
 else     if (modelData.getClassNameToVoClass().containsKey(parameterType.toString())) {
      VoClass voClass=modelData.getClassNameToVoClass().get(parameterType.toString());
      buffer.append(indentation + "String_Node_Str" + inputStreamVarName+ "String_Node_Str");
      buffer.append(indentation + "String_Node_Str" + String.format(affectationFormat,targetVariableName,"String_Node_Str" + getValueObjectName(voClass).getQualifiedName() + "String_Node_Str"+ inputStreamVarName+ "String_Node_Str")+ "String_Node_Str");
      buffer.append(indentation + "String_Node_Str");
      buffer.append(indentation + "String_Node_Str" + String.format(affectationFormat,targetVariableName,"String_Node_Str")+ "String_Node_Str");
    }
 else {
      config.getProcessingEnv().getMessager().printMessage(Diagnostic.Kind.ERROR,"String_Node_Str" + parameterType + "String_Node_Str");
      buffer.append(indentation + "String_Node_Str" + parameterType+ "String_Node_Str");
    }
  }
  return buffer;
}

Fixed version (ground truth):
private CharSequence getDecodingSourceCode(String affectationFormat,String indentation,String targetVariableName,String inputStreamVarName,Type parameterType,int recursionDepth){
  StringBuilder buffer=new StringBuilder();
  if (parameterType.getTypeKind() == TypeKind.Primitive) {
    PrimitiveType primitiveType=(PrimitiveType)parameterType;
    String primitiveName=primitiveType.getPrimitiveClass().getName();
    String valueName=inputStreamVarName + "String_Node_Str" + primitiveName.substring(0,1).toUpperCase()+ primitiveName.substring(1).toLowerCase()+ "String_Node_Str";
    buffer.append(indentation + String.format(affectationFormat,targetVariableName,valueName) + "String_Node_Str");
  }
 else   if (parameterType.getTypeKind() == TypeKind.PrimitiveWrapper) {
    PrimitiveWrapperType primitiveWrapperType=(PrimitiveWrapperType)parameterType;
    String primitiveName=primitiveWrapperType.getPrimitiveClass().getName();
    String valueName=inputStreamVarName + "String_Node_Str" + primitiveName.substring(0,1).toUpperCase()+ primitiveName.substring(1).toLowerCase()+ "String_Node_Str";
    buffer.append(indentation + String.format(affectationFormat,targetVariableName,valueName) + "String_Node_Str");
  }
 else   if (parameterType.getTypeKind() == TypeKind.Array) {
    ArrayType arrayType=(ArrayType)parameterType;
    CharSequence initValueBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth + "String_Node_Str"+ recursionDepth+ "String_Node_Str",inputStreamVarName,arrayType.getComponentType(),recursionDepth + 1);
    buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",indentation,toString(arrayType.getComponentType()),inputStreamVarName,recursionDepth,initValueBlock,String.format(affectationFormat,targetVariableName,"String_Node_Str"),String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth),toString(arrayType.getTypeWithNoArray()),arrayType.bracketToString().substring(2)));
  }
 else   if (parameterType.getTypeKind() == TypeKind.Enum) {
    EnumType enumType=(EnumType)parameterType;
    int nbEnumItems=enumType.getNbEnumItems();
    String enumOrdinalAsInt=inputStreamVarName + (nbEnumItems + 1 <= 256 ? "String_Node_Str" : (nbEnumItems + 1 <= 65536 ? "String_Node_Str" : "String_Node_Str"));
    buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str",indentation,recursionDepth,enumOrdinalAsInt,String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth + "String_Node_Str"+ nbEnumItems+ "String_Node_Str"+ enumType.getQualifiedClassName()+ "String_Node_Str"+ recursionDepth+ "String_Node_Str") + "String_Node_Str") + "String_Node_Str");
  }
 else   if (parameterType.getTypeKind() == TypeKind.Declared) {
    DeclaredType declaredType=(DeclaredType)parameterType;
    if (declaredType.getTypeClass() == String.class) {
      buffer.append(indentation + String.format(affectationFormat,targetVariableName,inputStreamVarName + "String_Node_Str") + "String_Node_Str");
    }
 else     if (declaredType.getTypeClass() == List.class) {
      CharSequence initValueBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth,inputStreamVarName,declaredType.getGenericArgumentTypeList().get(0),recursionDepth + 1);
      buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",indentation,toString(declaredType.getGenericArgumentTypeList().get(0)),inputStreamVarName,recursionDepth,initValueBlock,String.format(affectationFormat,targetVariableName,"String_Node_Str"),String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth)));
    }
 else     if (declaredType.getTypeClass() == Set.class) {
      CharSequence initValueBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth,inputStreamVarName,declaredType.getGenericArgumentTypeList().get(0),recursionDepth + 1);
      buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",indentation,toString(declaredType.getGenericArgumentTypeList().get(0)),inputStreamVarName,recursionDepth,initValueBlock,String.format(affectationFormat,targetVariableName,"String_Node_Str"),String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth)));
    }
 else     if (declaredType.getTypeClass() == Collection.class) {
      CharSequence initValueBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth,inputStreamVarName,declaredType.getGenericArgumentTypeList().get(0),recursionDepth + 1);
      buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",indentation,toString(declaredType.getGenericArgumentTypeList().get(0)),inputStreamVarName,recursionDepth,initValueBlock,String.format(affectationFormat,targetVariableName,"String_Node_Str"),String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth)));
    }
 else     if (declaredType.getTypeClass() == Map.class) {
      CharSequence initKeyBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth,inputStreamVarName,declaredType.getGenericArgumentTypeList().get(0),recursionDepth + 1);
      CharSequence initValueBlock=getDecodingSourceCode("String_Node_Str",indentation + "String_Node_Str","String_Node_Str" + recursionDepth,inputStreamVarName,declaredType.getGenericArgumentTypeList().get(1),recursionDepth + 1);
      buffer.append(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",indentation,toString(declaredType.getGenericArgumentTypeList().get(0)),toString(declaredType.getGenericArgumentTypeList().get(1)),inputStreamVarName,recursionDepth,initKeyBlock,initValueBlock,String.format(affectationFormat,targetVariableName,"String_Node_Str"),String.format(affectationFormat,targetVariableName,"String_Node_Str" + recursionDepth)));
    }
 else     if (modelData.getClassNameToVoClass().containsKey(parameterType.toString())) {
      VoClass voClass=modelData.getClassNameToVoClass().get(parameterType.toString());
      buffer.append(indentation + "String_Node_Str" + inputStreamVarName+ "String_Node_Str");
      buffer.append(indentation + "String_Node_Str" + String.format(affectationFormat,targetVariableName,"String_Node_Str" + getValueObjectName(voClass).getQualifiedName() + "String_Node_Str"+ inputStreamVarName+ "String_Node_Str")+ "String_Node_Str");
      buffer.append(indentation + "String_Node_Str");
      buffer.append(indentation + "String_Node_Str" + String.format(affectationFormat,targetVariableName,"String_Node_Str")+ "String_Node_Str");
    }
 else {
      config.getProcessingEnv().getMessager().printMessage(Diagnostic.Kind.ERROR,"String_Node_Str" + parameterType + "String_Node_Str");
      buffer.append(indentation + "String_Node_Str" + parameterType+ "String_Node_Str");
    }
  }
  return buffer;
}