anchor.diff:                    int seconds: 0,
                     int milliseconds: 0,
                     int microseconds: 0})
  -      : _duration = days * MICROSECONDS_PER_DAY +
  -                    hours * MICROSECONDS_PER_HOUR +
  -                    minutes * MICROSECONDS_PER_MINUTE +
  -                    seconds * MICROSECONDS_PER_SECOND +
  -                    milliseconds * MICROSECONDS_PER_MILLISECOND +
  -                    microseconds;
  +      : this._microseconds(
  +            days * MICROSECONDS_PER_DAY +
  +            hours * MICROSECONDS_PER_HOUR +
  +            minutes * MICROSECONDS_PER_MINUTE +
  +            seconds * MICROSECONDS_PER_SECOND +
  +            milliseconds * MICROSECONDS_PER_MILLISECOND +
  +            microseconds);
  +
  +  // Fast path internal direct constructor to avoids the optional arguments and
  +  // [_microseconds] recomputation.
  +  const Duration._microseconds(this._duration);
   
     /**
      * Adds this Duration and [other] and
      * returns the sum as a new Duration object.
      */
     Duration operator +(Duration other) {
  -    return new Duration(microseconds: _duration + other._duration);
  +    return new Duration._microseconds(_duration + other._duration);
     }
   
     /**
  
positive.code:     // By doing the check here instead of relying on "~/" below we get the
      // exception even with dart2js.
      if (quotient == 0) throw new IntegerDivisionByZeroException();
      return new Duration(microseconds: _duration ~/ quotient);
    }
  
    /**
  
negative.code:     }
  
      if (inMicroseconds < 0) {
        return "-${-this}";
      }
      String twoDigitMinutes = twoDigits(inMinutes.remainder(MINUTES_PER_HOUR));
      String twoDigitSeconds = twoDigits(inSeconds.remainder(SECONDS_PER_MINUTE));
  