anchor.diff:          : JS('JSUInt31', r'(#.getMilliseconds() + 0)', lazyAsJsDate(receiver));
     }
   
  +  @NoSideEffects()
  +  @NoThrows()
  +  @NoInline()
     static getWeekday(DateTime receiver) {
       int weekday = (receiver.isUtc)
           ? JS('int', r'#.getUTCDay() + 0', lazyAsJsDate(receiver))
  
positive.code: 
    static int getTimeZoneOffsetInMinutes(DateTime receiver) {
      // Note that JS and Dart disagree on the sign of the offset.
      return -JS('int', r'#.getTimezoneOffset()', lazyAsJsDate(receiver));
    }
  
    static valueFromDecomposedDate(
        years, month, day, hours, minutes, seconds, milliseconds, isUtc) {
      final int MAX_MILLISECONDS_SINCE_EPOCH = 8640000000000000;
      checkInt(years);
  
negative.code:         value > MAX_MILLISECONDS_SINCE_EPOCH) {
        return null;
      }
      // The JavaScript Date constructor 'corrects' year NN to 19NN. Undo that
      // correction.
      if (0 <= years && years < 100) return patchUpY2K(value, years, isUtc);
      return JS('int', '#', value);
    }
  
    static patchUpY2K(value, years, isUtc) {
      var date = JS('', r'new Date(#)', value);
      // TODO(sra): Does this work correctly if the original input wrapped months
      // into a different year?
      if (isUtc) {
        JS('num', r'#.setUTCFullYear(#)', date, years);
      } else {
  