public int Compare(T x, T y) { int?nullable = ChainableComparer <T> .handleNulls(x, y); if (nullable.HasValue) { return(nullable.Value); } int num = this.DoCompare(x, y); if (this.needsToEvaluateNext(num)) { num = this._nextComparer.Compare(x, y); } if (this._direction == Direction.Descending) { ChainableComparer <T> .invert(ref num); } return(num); }