Buggy code:
protected void doVisitArrayLoad ( int def , int arrayRef ) { } public void doVisitArrayStore ( int arrayRef , int value ) { } @ Override public void visitArrayStore ( SSAArrayStoreInstruction instruction ) { } @ Override public void visitCheckCast ( SSACheckCastInstruction instruction ) { } @ Override public void visitReturn ( SSAReturnInstruction instruction ) { } @ Override public void visitGet ( SSAGetInstruction instruction ) { } protected void visitGetInternal ( int lval , int ref , boolean isStatic , FieldReference field ) { } @ Override public void visitPut ( SSAPutInstruction instruction ) { } public void visitPutInternal ( int rval , int ref , boolean isStatic , FieldReference field ) { } private void notifyPut ( int rval , int ref , IField f , boolean isStatic ) { } private void processPutField ( int rval , int ref , IField f ) { } private void processPutStatic ( int rval , FieldReference field , IField f ) { } @ Override public void visitInvoke ( SSAInvokeInstruction instruction ) { } protected void visitInvokeInternal ( final SSAAbstractInvokeInstruction instruction , SSAPropagationCallGraphBuilder . ConstraintVisitor . InvariantComputer invs ) { if ( SSAPropagationCallGraphBuilder . DEBUG ) { System . err . println ( ( "visitInvoke:<seq2seq4repair_space>" + instruction ) ) ; } PointerKey uniqueCatch = null ; if ( SSAPropagationCallGraphBuilder . hasUniqueCatchBlock ( instruction , ir ) ) { uniqueCatch = getBuilder ( ) . getUniqueCatchKey ( instruction , ir , node ) ; } InstanceKey [ ] [ ] invariantParameters = invs . computeInvariantParameters ( instruction ) ; if ( instruction . getCallSite ( ) . isStatic ( ) ) { for ( CGNode n : getBuilder ( ) . getTargetsForCall ( node , instruction , invariantParameters ) ) { getBuilder ( ) . processResolvedCall ( node , instruction , n , invariantParameters , uniqueCatch ) ; if ( SSAPropagationCallGraphBuilder . DEBUG ) { System . err . println ( ( "visitInvoke<seq2seq4repair_space>class<seq2seq4repair_space>init<seq2seq4repair_space>" + n ) ) ; } processClassInitializer ( n . getMethod ( ) . getDeclaringClass ( ) ) ; } } else { IntSet params = getBuilder ( ) . getContextSelector ( ) . getRelevantParameters ( node , instruction . getCallSite ( ) ) ; if ( ! ( params . contains ( 0 ) ) ) { params = IntSetUtil . makeMutableCopy ( params ) ; ( ( MutableIntSet ) ( params ) ) . add ( 0 ) ; } final int [ ] vns = new int [ params . size ( ) ] ; params . foreach ( new IntSetAction ( ) { private int i = 0 ; @ Override public void act ( int x ) { vns [ ( ( i ) ++ ) ] = instruction . getUse ( x ) ; } } ) ; if ( contentsAreInvariant ( symbolTable , du , vns ) ) { for ( CGNode n : getBuilder ( ) . getTargetsForCall ( node , instruction , invariantParameters ) ) { getBuilder ( ) . processResolvedCall ( node , instruction , n , invariantParameters , uniqueCatch ) ; processClassInitializer ( n . getMethod ( ) . getDeclaringClass ( ) ) ; } } else { if ( SSAPropagationCallGraphBuilder . DEBUG ) { System . err . println ( ( ( ( "Add<seq2seq4repair_space>side<seq2seq4repair_space>effect,<seq2seq4repair_space>dispatch<seq2seq4repair_space>to<seq2seq4repair_space>" + instruction ) + "<seq2seq4repair_space>for<seq2seq4repair_space>" ) + params ) ) ; } final List < PointerKey > pks = new ArrayList < PointerKey > ( params . size ( ) ) ; params . foreach ( new IntSetAction ( ) { @ Override public void act ( int x ) { if ( ! ( contentsAreInvariant ( symbolTable , du , instruction . getUse ( x ) ) ) ) { pks . add ( getBuilder ( ) . getPointerKeyForLocal ( node , instruction . getUse ( x ) ) ) ; } } } ) ; if ( ! ( instruction . isStatic ( ) ) ) { PointerKey pKey = pks . get ( 0 ) ; PointsToSetVariable pointsTo = system . findOrCreatePointsToSet ( pKey ) ; if ( ( pointsTo . getValue ( ) ) == null ) { IClassHierarchy cha = getClassHierarchy ( ) ; IClass receiverClass = cha . lookupClass ( instruction . getDeclaredTarget ( ) . getDeclaringClass ( ) ) ; <START_BUG> if ( ! ( receiverClass . getClassLoader ( ) . getReference ( ) . equals ( Primordial ) ) ) { <END_BUG> if ( ( ! ( receiverClass . isAbstract ( ) ) ) && ( ! ( receiverClass . isInterface ( ) ) ) ) { NewSiteReference newsite = NewSiteReference . make ( instruction . getProgramCounter ( ) , receiverClass . getReference ( ) ) ; InstanceKey iKey = getInstanceKeyForAllocation ( newsite ) ; if ( iKey != null ) { if ( SSAPropagationCallGraphBuilder . DEBUG ) { System . err . println ( ( "Adding<seq2seq4repair_space>instance<seq2seq4repair_space>key<seq2seq4repair_space>for<seq2seq4repair_space>type:<seq2seq4repair_space>" + ( iKey . getConcreteType ( ) ) ) ) ; } system . findOrCreateIndexForInstanceKey ( iKey ) ; system . newConstraint ( pKey , iKey ) ; } } } } } SSAPropagationCallGraphBuilder . DispatchOperator dispatchOperator = getBuilder ( ) . new DispatchOperator ( instruction , node , invariantParameters , uniqueCatch , params ) ; system . newSideEffect ( dispatchOperator , pks . toArray ( new PointerKey [ pks . size ( ) ] ) ) ; } } } @ Override public void visitNew ( SSANewInstruction instruction ) { } @ Override public void visitThrow ( SSAThrowInstruction instruction ) { } @ Override public void visitGetCaughtException ( SSAGetCaughtExceptionInstruction instruction ) { } private int booleanConstantTest ( SSAConditionalBranchInstruction c , int v ) { } private int nullConstantTest ( SSAConditionalBranchInstruction c , int v ) { } @ Override public void visitPhi ( SSAPhiInstruction instruction ) { } @ Override public void visitPi ( SSAPiInstruction instruction ) { } private void addPiAssignment ( PointerKey dst , int src ) { } public ISSABasicBlock getBasicBlock ( ) { }

Fix:
if ( ( receiverClass != null ) && ( ! ( receiverClass . getClassLoader ( ) . getReference ( ) . equals ( Primordial ) ) ) ) {