code: int spread(Object element)
      {
          // This function ensures that hashCodes that differ only by
          // constant multiples at each bit position have a bounded
          // number of collisions (approximately 8 at default load factor).
          K nonSentinelKey = this.toNonSentinel(element);
          int h = nonSentinelKey == null ? 0 : this.hashingStrategy.computeHashCode(nonSentinelKey);
          h ^= h >>> 20 ^ h >>> 12;
          h ^= h >>> 7 ^ h >>> 4;
          return h & (this.keys.length - 1);
      }
docs: exposed for testing