docs: @SuppressWarnings("unchecked")
      public V remove(final int key)
      {
          V value = null;
          @DoNotSub final int setNumber = Hashing.hash(key, mask);
          @DoNotSub final int setBeginIndex = setNumber << setSizeShift;
  
          for (@DoNotSub int i = setBeginIndex, nextSetIndex = setBeginIndex + setSize; i < nextSetIndex; i++)
          {
              if (null == values[i])
              {
                  break;
              }
  
              if (key == keys[i])
              {
                  value = (V)values[i];
                  shuffleUp(i, nextSetIndex - 1);
                  --size;
  
                  evictionConsumer.accept(value);
                  break;
              }
          }
  
          return value;
      }