protected final SlotAssignmentResult ensure0 ( long key1 , long key2 ) { assertValid ( ) ; final long size = size ( ) ; if ( size == expansionThreshold ( ) ) { resizeTo ( CapacityUtil . nextCapacity ( capacity ( ) ) ) ; } long slot = keyHash ( key1 , key2 ) & mask ( ) ; while ( isSlotAssigned ( slot ) ) { if ( equal ( key1OfSlot ( slot ) , key2OfSlot ( slot ) , key1 , key2 ) ) { slotAssignmentResult . setAddress ( valueAddrOfSlot ( slot ) ) ; slotAssignmentResult . setNew ( false ) ; return slotAssignmentResult ; } slot = ( slot + 1 ) & mask ( ) ; } setSize ( size + 1 ) ; putKey ( baseAddress , slot , key1 , key2 ) ; slotAssignmentResult . setAddress ( valueAddrOfSlot ( slot ) ) ; slotAssignmentResult . setNew ( true ) ; return slotAssignmentResult ; }
These protected final methods will be called from the subclasses