anchor.diff:  ///
   /// Durations are context independent. For example, a duration of 2 days is
   /// always 48 hours, even when it is added to a `DateTime` just when the
  -/// time zone is about to do a daylight-savings switch. (See [DateTime.add]).
  +/// time zone is about to make a daylight-savings switch. (See [DateTime.add]).
   ///
   /// Despite the same name, a `Duration` object does not implement "Durations"
   /// as specified by ISO 8601. In particular, a duration object does not keep
  
positive.code:   /// Returns a string with hours, minutes, seconds, and microseconds, in the
    /// following format: `H:MM:SS.mmmmmm`. For example,
    /// ```dart
    /// var d = Duration(days: 1, hours: 1, minutes: 33, microseconds: 500);
    /// d.toString();  // "25:33:00.000500"
    ///
    /// d = Duration(days: 0, hours: 1, minutes: 10, microseconds: 500);
    /// d.toString();  // "1:10:00.000500"
    /// ```
    String toString() {
      var microseconds = inMicroseconds;
  
negative.code: /// only uses these arguments to compute the length of the corresponding time
  /// interval.
  ///
  /// To create a new `Duration` object, use this class's single constructor
  /// giving the appropriate arguments:
  /// ```dart
  /// const fastestMarathon = Duration(hours: 2, minutes: 3, seconds: 2);
  /// ```
  /// The [Duration] represents a single number of microseconds,
  /// which is the sum of all the individual arguments to the constructor.
  ///
  /// Properties can access that single number in different ways.
  /// For example the [inMinutes] gives the number of whole minutes
  /// in the total duration, which includes the minutes that were provided
  /// as "hours" to the constructor, and can be larger than 59.
  ///
  /// ```dart
  /// const fastestMarathon = Duration(hours: 2, minutes: 3, seconds: 2);
  /// print(fastestMarathon.inDays); // 0
  /// print(fastestMarathon.inHours); // 2
  /// print(fastestMarathon.inMinutes); // 123
  /// print(fastestMarathon.inSeconds); // 7382
  /// print(fastestMarathon.inMilliseconds); // 7382000
  /// ```
  /// The duration can be negative, in which case
  /// all the properties derived from the duration are also non-positive.
  /// ```dart
  /// const overDayAgo = Duration(days: -1, hours: -10);
  /// print(overDayAgo.inDays); // -1
  /// print(overDayAgo.inHours); // -34
  /// print(overDayAgo.inMinutes); // -2040
  /// ```
  /// Use one of the properties, such as [inDays],
  /// to retrieve the integer value of the `Duration` in the specified time unit.
  /// Note that the returned value is rounded down.
  /// For example,
  /// ```dart
  /// const aLongWeekend = Duration(hours: 88);
  /// print(aLongWeekend.inDays); // 3
  /// ```
  /// This class provides a collection of arithmetic
  /// and comparison operators,
  /// plus a set of constants useful for converting time units.
  /// ```dart
  /// const firstHalf = Duration(minutes: 45); // 00:45:00.000000
  /// const secondHalf = Duration(minutes: 45); // 00:45:00.000000
  /// const overTime = Duration(minutes: 30); // 00:30:00.000000
  /// final maxGameTime = firstHalf + secondHalf + overTime;
  /// print(maxGameTime.inMinutes); // 120
  ///
  /// // The duration of the firstHalf and secondHalf is the same, returns 0.
  /// var result = firstHalf.compareTo(secondHalf);
  /// print(result); // 0
  ///
  /// // Duration of overTime is shorter than firstHalf, returns < 0.
  /// result = overTime.compareTo(firstHalf);
  /// print(result); // < 0
  ///
  /// // Duration of secondHalf is longer than overTime, returns > 0.
  /// result = secondHalf.compareTo(overTime);
  /// print(result); // > 0
  /// ```
  ///
  /// **See also:**
  /// * [DateTime] to represent a point in time.
  /// * [Stopwatch] to measure time-spans.
  class Duration implements Comparable<Duration> {
    /// The number of microseconds per millisecond.
    static const int microsecondsPerMillisecond = 1000;
  