private HamtPMap < K , V > vacateRoot ( ) { int bucket = bucket ( this . hash ) ; int bucketMask = 1 << bucket ; int index = index ( bucketMask ) ; if ( ( mask & bucketMask ) != 0 ) { HamtPMap < K , V > newChild = children [ index ] . plus ( this . key , shift ( this . hash ) , this . value ) ; return new HamtPMap <> ( null , 0 , null , mask , replaceChild ( children , index , newChild ) ) ; } HamtPMap < K , V > newChild = new HamtPMap <> ( this . key , shift ( this . hash ) , this . value , 0 , emptyChildren ( ) ) ; return new HamtPMap <> ( null , 0 , null , mask | bucketMask , insertChild ( children , index , newChild ) ) ; }
Moves the root into the appropriate child .