static defaultEquals(a, b) {
    // NaN !== NaN, so we need to special case it.
    if (typeof a === 'number' &&
        typeof b === 'number' && isNaN(a) && isNaN(b)) {
      return true;
    }
    return a === b;
  }
Returns whether the two values contain the same value.  This correctly
handles comparisons involving NaN.
@param {T} a
@param {T} b
@return {boolean}
@template T