Buggy code:
@ Options public class CFASecondPassBuilder { @ Option ( secure = true , name = "analysis.summaryEdges" , description = "create<seq2seq4repair_space>summary<seq2seq4repair_space>call<seq2seq4repair_space>statement<seq2seq4repair_space>edges" ) private boolean summaryEdges = false ; @ Option ( secure = true , name = "cfa.assumeFunctions" , description = "Which<seq2seq4repair_space>functions<seq2seq4repair_space>should<seq2seq4repair_space>be<seq2seq4repair_space>interpreted<seq2seq4repair_space>as<seq2seq4repair_space>encoding<seq2seq4repair_space>assumptions" ) private Set < String > assumeFunctions = ImmutableSet . of ( "__VERIFIER_assume" ) ; protected final MutableCFA cfa ; protected final Language language ; protected final LogManager logger ; public CFASecondPassBuilder ( final MutableCFA pCfa , final Language pLanguage , final LogManager pLogger , final Configuration config ) throws InvalidConfigurationException { } public void insertCallEdgesRecursively ( ) throws ParserException { } private void insertCallEdges ( final AStatementEdge statementEdge ) throws ParserException { } private boolean shouldCreateCallEdges ( final AFunctionCall call ) { } private void createCallAndReturnEdges ( AStatementEdge edge , AFunctionCall functionCall ) throws ParserException { } private boolean checkParamSizes ( AFunctionCallExpression functionCallExpression , IAFunctionType functionType ) { } private void replaceBuiltinFunction ( AStatementEdge edge , AFunctionCall call ) { if ( ! ( edge instanceof CStatementEdge ) ) { return ; } AFunctionCallExpression f = call . getFunctionCallExpression ( ) ; if ( ( f . getDeclaration ( ) ) == null ) { return ; } String name = f . getDeclaration ( ) . getName ( ) ; if ( ! ( assumeFunctions . contains ( name ) ) ) { return ; } if ( ( f . getParameterExpressions ( ) . size ( ) ) != 1 ) { logger . logf ( Level . WARNING , "Ignoring<seq2seq4repair_space>call<seq2seq4repair_space>to<seq2seq4repair_space>%s<seq2seq4repair_space>with<seq2seq4repair_space>illegal<seq2seq4repair_space>number<seq2seq4repair_space>of<seq2seq4repair_space>parameters<seq2seq4repair_space>(%s)." , name , f . getParameterExpressions ( ) . size ( ) ) ; return ; } if ( call instanceof AFunctionCallAssignmentStatement ) { logger . logf ( Level . WARNING , "Ignoring<seq2seq4repair_space>non-void<seq2seq4repair_space>call<seq2seq4repair_space>to<seq2seq4repair_space>%s." , name ) ; return ; } CExpression assumeExp = ( ( CExpression ) ( f . getParameterExpressions ( ) . get ( 0 ) ) ) ; <START_BUG> if ( ! ( ( assumeExp instanceof CBinaryExpression ) && ( ! ( ( ( CBinaryExpression ) ( assumeExp ) ) . getOperator ( ) . isLogicalOperator ( ) ) ) ) ) { <END_BUG> assumeExp = new org . sosy_lab . cpachecker . cfa . ast . c . CBinaryExpressionBuilder ( cfa . getMachineModel ( ) , logger ) . buildBinaryExpressionUnchecked ( assumeExp , ZERO , NOT_EQUALS ) ; } AssumeEdge trueEdge = new org . sosy_lab . cpachecker . cfa . model . c . CAssumeEdge ( edge . getRawStatement ( ) , edge . getFileLocation ( ) , edge . getPredecessor ( ) , edge . getSuccessor ( ) , assumeExp , true ) ; CFANode elseNode = new org . sosy_lab . cpachecker . cfa . model . CFATerminationNode ( edge . getPredecessor ( ) . getFunctionName ( ) ) ; AssumeEdge falseEdge = new org . sosy_lab . cpachecker . cfa . model . c . CAssumeEdge ( edge . getRawStatement ( ) , edge . getFileLocation ( ) , edge . getPredecessor ( ) , elseNode , assumeExp , false ) ; CFACreationUtils . removeEdgeFromNodes ( edge ) ; cfa . addNode ( elseNode ) ; CFACreationUtils . addEdgeUnconditionallyToCFA ( trueEdge ) ; CFACreationUtils . addEdgeUnconditionallyToCFA ( falseEdge ) ; } }

Fix:
if ( ! ( ( assumeExp instanceof CBinaryExpression ) && ( ( ( CBinaryExpression ) ( assumeExp ) ) . getOperator ( ) . isLogicalOperator ( ) ) ) ) {