public SortedFacadeMapCollection(IList data, Func <T, int, U> selector, Func <U, U, int> comparer = null) : base(data, selector) { this.Comparer = comparer ?? Comparer <U> .Default.Compare; Contract.Requires(data.Cast <T>().Select(selector).IsSorted(Comparer)); }