CodeContracts: логическое условие оценивается как постоянное значение, почему?

Я получаю это предупреждение, но не могу понять проблему ...

CodeContracts: warning: логическое условие d1.Count! = D2.Count всегда принимает постоянное значение. Если он (или его отрицание) появляется в исходном коде, возможно, у вас есть неработающий код или избыточная проверка

Код выглядит следующим образом:

public static bool DictionaryEquals<TKey, TValue>(IDictionary<TKey, TValue> d1, IDictionary<TKey, TValue> d2)
{
    if (d1 == d2) return true;
    if (d1 == null || d2 == null) return false;
    if (d1.Count != d2.Count) return false; // <-- warning here

    // Equality check goes here

    return true;
}

// Equality check goes here&nbsp;часть может быть как есть или замененаправильная реализация&nbsp;и я все еще получаю то же предупреждение.