code: void moveLastEntry(int dstIndex) {
      int srcIndex = size() - 1;
      if (dstIndex < srcIndex) {
        // move last entry to deleted spot
        elements[dstIndex] = elements[srcIndex];
        elements[srcIndex] = null;
  
        // move the last entry to the removed spot, just like we moved the element
        long lastEntry = entries[srcIndex];
        entries[dstIndex] = lastEntry;
        entries[srcIndex] = UNSET;
  
        // also need to update whoever's "next" pointer was pointing to the last entry place
        // reusing "tableIndex" and "next"; these variables were no longer needed
        int tableIndex = getHash(lastEntry) & hashTableMask();
        int lastNext = table[tableIndex];
        if (lastNext == srcIndex) {
          // we need to update the root pointer
          table[tableIndex] = dstIndex;
        } else {
          // we need to update a pointer in an entry
          int previous;
          long entry;
          do {
            previous = lastNext;
            lastNext = getNext(entry = entries[lastNext]);
          } while (lastNext != srcIndex);
          // here, entries[previous] points to the old entry location; update it
          entries[previous] = swapNext(entry, dstIndex);
        }
      } else {
        elements[dstIndex] = null;
        entries[dstIndex] = UNSET;
      }
    }
docs: Moves the last entry in the entry array into {@code dstIndex}, and nulls out its old position.