Função FindEntry no Dictionary.cs

Eu estive analisando a implementação do dicionário do .NET, pois queria entender o que torna o dicionário ContainsKey e a pesquisa rápida:http://referencesource.microsoft.com/#mscorlib/system/collections/generic/dictionary.cs,15debc34d286fdb3

A função ContainsKey basicamente leva ao FindEntry listado abaixo:

buckets é uma matriz de números inteiros e as entradas são uma matriz de objetos Entry, que são estruturas que contêm HashCode, TKey e TValue.

Então, eu entendo que essa pesquisa é rápida, pois é uma pesquisa de matriz simples.

private int FindEntry(TKey key) {
        if( key == null) {
            ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key);
        }
   if (buckets != null) {
            int hashCode = comparer.GetHashCode(key) & 0x7FFFFFFF;
            for (int i = buckets[hashCode % buckets.Length]; i >= 0; i = entries[i].next) {
                if (entries[i].hashCode == hashCode && comparer.Equals(entries[i].key, key)) return i;
            }
        }
        return -1;
    }

No entanto, estou tentando entender essas duas linhas:

int hashCode = comparer.GetHashCode(key) & 0x7FFFFFFF;
        for (int i = buckets[hashCode % buckets.Length]; i >= 0; i = entries[i].next)

1) Se não entendi corretamente, 0x7FFFFFFF existe para garantir que não recebamos um valor negativo. Então, o que a primeira linha retorna? É um número inteiro simples ou um primo?

2) Na segunda linha, por que inicializamos i para buckets [hashCode% buckets.Length]?

questionAnswers(1)

yourAnswerToTheQuestion