private static <K> int tablePos(HashingStrategy<K> strategy, Object[] data, K key) {
    int pos = Math.floorMod(strategy.hashCode(key), data.length / 2) * 2;
    while (true) {
      @SuppressWarnings("unchecked") K candidate = (K)data[pos];
      if (candidate == null) {
        return ~pos;
      }
      if (strategy.equals(candidate, key)) {
        return pos;
      }
      pos += 2;
      if (pos == data.length) {
        pos = 0;
      }
    }
  }
private static <K> int tablePos(HashingStrategy<K> strategy, Object[] data, K key)