Buggy code:
public abstract class AnalyticalAndGradientPlacer extends Placer { protected List < BlockType > blockTypes ; protected List < Integer > blockTypeIndexStarts ; protected final Map < GlobalBlock , AnalyticalAndGradientPlacer . NetBlock > netBlocks = new HashMap < > ( ) ; protected int numIOBlocks ; protected int numMovableBlocks ; protected double [ ] linearX ; protected double [ ] linearY ; private int [ ] legalX ; private int [ ] legalY ; protected List < AnalyticalAndGradientPlacer . Net > nets ; protected List < AnalyticalAndGradientPlacer . TimingNet > timingNets ; protected static final String T_INITIALIZE_DATA = "initialize<seq2seq4repair_space>data" ; protected static final String T_UPDATE_CIRCUIT = "update<seq2seq4repair_space>circuit" ; protected static final String T_BUILD_LINEAR = "build<seq2seq4repair_space>linear<seq2seq4repair_space>system" ; protected static final String T_SOLVE_LINEAR = "solve<seq2seq4repair_space>linear<seq2seq4repair_space>system" ; protected static final String T_CALCULATE_COST = "calculate<seq2seq4repair_space>cost" ; protected static final String T_LEGALIZE = "legalize" ; public AnalyticalAndGradientPlacer ( Circuit circuit , Options options , Random random , Logger logger , PlacementVisualizer visualizer ) { } protected abstract boolean isTimingDriven ( ) { } protected abstract void solveLinear ( int iteration ) { } protected abstract void solveLegal ( int iteration ) { } protected abstract boolean stopCondition ( ) { } protected abstract void printStatisticsHeader ( ) { } protected abstract void printStatistics ( int iteration , double time ) { } @ Override public void initializeData ( ) { } private void addNet ( AnalyticalAndGradientPlacer . NetBlock sourceBlock , LeafBlock sourceLeafBlock , int pinIndex ) { } @ Override public void place ( ) { } protected void updateLegal ( int [ ] newLegalX , int [ ] newLegalY ) { } protected void updateCircuit ( ) throws PlacementException { } public static double getWeight ( int size ) { } class NetBlock { final int blockIndex ; final int offset ; NetBlock ( int blockIndex , int offset ) { } NetBlock ( AnalyticalAndGradientPlacer . TimingNetBlock timingNetBlock ) { } @ Override public boolean equals ( Object otherObject ) { } private boolean equals ( AnalyticalAndGradientPlacer . NetBlock otherNetBlock ) { <START_BUG> return ( ( this . blockIndex ) == ( otherNetBlock . blockIndex ) ) && ( ( this . offset ) == ( otherNetBlock . blockIndex ) ) ; <END_BUG> } @ Override public int hashCode ( ) { } } class TimingNetBlock { final int blockIndex ; final int offset ; final TimingEdge timingEdge ; TimingNetBlock ( int blockIndex , int offset , TimingEdge timingEdge ) { } TimingNetBlock ( AnalyticalAndGradientPlacer . NetBlock block , TimingEdge timingEdge ) { } } class Net { final AnalyticalAndGradientPlacer . NetBlock [ ] blocks ; Net ( AnalyticalAndGradientPlacer . TimingNet timingNet ) { } } class TimingNet { final AnalyticalAndGradientPlacer . NetBlock source ; final AnalyticalAndGradientPlacer . TimingNetBlock [ ] sinks ; TimingNet ( AnalyticalAndGradientPlacer . NetBlock source , int numSinks ) { } } No newline ; at end ; of file ; }

Fix:
return ( ( this . blockIndex ) == ( otherNetBlock . blockIndex ) ) && ( ( this . offset ) == ( otherNetBlock . offset ) ) ;