Program: 26845
Project: 26845
Buggy source:
public static CodeBlock.Builder getSQLiteStatementMethod(AtomicInteger index,String elementName,String fullElementName,TypeName elementTypeName,boolean isModelContainerAdapter,BaseColumnAccess columnAccess,String variableNameString){
  String statement=columnAccess.getColumnAccessString(elementTypeName,elementName,fullElementName,variableNameString,isModelContainerAdapter);
  CodeBlock.Builder codeBuilder=CodeBlock.builder();
  String finalAccessStatement=statement;
  boolean isBlobRaw=false;
  if (columnAccess instanceof WrapperColumnAccess || isModelContainerAdapter) {
    finalAccessStatement=(isModelContainerAdapter ? (variableNameString + elementName) : ("String_Node_Str" + fullElementName));
    TypeName typeName;
    if (columnAccess instanceof TypeConverterAccess) {
      typeName=((TypeConverterAccess)columnAccess).typeConverterDefinition.getDbTypeName();
      isBlobRaw=(typeName.equals(ClassName.get(Blob.class)));
    }
 else {
      if (columnAccess instanceof EnumColumnAccess) {
        typeName=ClassName.get(String.class);
      }
 else       if (columnAccess instanceof BlobColumnAccess) {
        typeName=ArrayTypeName.of(TypeName.BYTE);
      }
 else {
        typeName=elementTypeName;
      }
      if (!isModelContainerAdapter) {
        String shortAccess=((WrapperColumnAccess)columnAccess).existingColumnAccess.getShortAccessString(elementTypeName,elementName,isModelContainerAdapter);
        codeBuilder.addStatement("String_Node_Str",typeName,finalAccessStatement,shortAccess,statement);
      }
 else {
        codeBuilder.addStatement("String_Node_Str",typeName,finalAccessStatement,statement);
      }
    }
  }
  String putAccess=finalAccessStatement;
  if (isBlobRaw) {
    putAccess=finalAccessStatement + "String_Node_Str";
  }
  if (!elementTypeName.isPrimitive()) {
    if (!isModelContainerAdapter && (columnAccess instanceof EnumColumnAccess || columnAccess instanceof BlobColumnAccess || isBlobRaw)) {
      codeBuilder.beginControlFlow("String_Node_Str",variableNameString + "String_Node_Str" + elementName,putAccess);
    }
 else {
      codeBuilder.beginControlFlow("String_Node_Str",putAccess);
    }
  }
  codeBuilder.addStatement("String_Node_Str",BindToStatementMethod.PARAM_STATEMENT,columnAccess.getSqliteTypeForTypeName(elementTypeName,isModelContainerAdapter).getSQLiteStatementMethod(),index.intValue(),putAccess);
  if (!elementTypeName.isPrimitive()) {
    codeBuilder.nextControlFlow("String_Node_Str").addStatement("String_Node_Str",BindToStatementMethod.PARAM_STATEMENT,index.intValue()).endControlFlow();
  }
  return codeBuilder;
}

Fixed version (ground truth):
public static CodeBlock.Builder getSQLiteStatementMethod(AtomicInteger index,String elementName,String fullElementName,TypeName elementTypeName,boolean isModelContainerAdapter,BaseColumnAccess columnAccess,String variableNameString){
  String statement=columnAccess.getColumnAccessString(elementTypeName,elementName,fullElementName,variableNameString,isModelContainerAdapter);
  CodeBlock.Builder codeBuilder=CodeBlock.builder();
  String finalAccessStatement=statement;
  boolean isBlobRaw=false;
  TypeName finalTypeName=elementTypeName;
  if (columnAccess instanceof WrapperColumnAccess || isModelContainerAdapter) {
    finalAccessStatement=(isModelContainerAdapter ? (variableNameString + elementName) : ("String_Node_Str" + fullElementName));
    if (columnAccess instanceof TypeConverterAccess) {
      finalTypeName=((TypeConverterAccess)columnAccess).typeConverterDefinition.getDbTypeName();
      isBlobRaw=(finalTypeName.equals(ClassName.get(Blob.class)));
    }
 else {
      if (columnAccess instanceof EnumColumnAccess) {
        finalTypeName=ClassName.get(String.class);
      }
 else       if (columnAccess instanceof BlobColumnAccess) {
        finalTypeName=ArrayTypeName.of(TypeName.BYTE);
      }
 else {
        finalTypeName=elementTypeName;
      }
    }
    if (!isModelContainerAdapter && !elementTypeName.isPrimitive()) {
      String shortAccess=((WrapperColumnAccess)columnAccess).existingColumnAccess.getShortAccessString(elementTypeName,elementName,isModelContainerAdapter);
      codeBuilder.addStatement("String_Node_Str",finalTypeName,finalAccessStatement,shortAccess,statement);
    }
 else {
      codeBuilder.addStatement("String_Node_Str",finalTypeName,finalAccessStatement,statement);
    }
  }
  String putAccess=finalAccessStatement;
  if (isBlobRaw) {
    putAccess=finalAccessStatement + "String_Node_Str";
  }
  if (!finalTypeName.isPrimitive()) {
    if (!isModelContainerAdapter && (columnAccess instanceof EnumColumnAccess || columnAccess instanceof BlobColumnAccess || isBlobRaw)) {
      codeBuilder.beginControlFlow("String_Node_Str",variableNameString + "String_Node_Str" + elementName,putAccess);
    }
 else {
      codeBuilder.beginControlFlow("String_Node_Str",putAccess);
    }
  }
  codeBuilder.addStatement("String_Node_Str",BindToStatementMethod.PARAM_STATEMENT,columnAccess.getSqliteTypeForTypeName(elementTypeName,isModelContainerAdapter).getSQLiteStatementMethod(),index.intValue(),putAccess);
  if (!finalTypeName.isPrimitive()) {
    codeBuilder.nextControlFlow("String_Node_Str").addStatement("String_Node_Str",BindToStatementMethod.PARAM_STATEMENT,index.intValue()).endControlFlow();
  }
  return codeBuilder;
}