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:    * The returned `Duration` has the same length as this one, but is always
     * positive.
     */
    Duration abs() => new Duration(microseconds: _duration.abs());
  
    /**
     * Returns a new `Duration` representing this `Duration` negated.
  
negative.code:    * The returned `Duration` has the same length as this one, but will have the
     * opposite sign of this one.
     */
    Duration operator -() => new Duration._microseconds(-_duration);
  }
  