   public static func microseconds<T: BinaryInteger>(
     _ microseconds: T
   ) -> Duration {
-    return Duration(_attoseconds: _Int128(microseconds) *
-                                 1_000_000_000_000)
+    return Duration(_attoseconds:
+      _Int128(microseconds).multiplied(by: 1_000_000_000_000 as UInt64))
   }
 
   /// Construct a `Duration` given a number of seconds microseconds as a 

  internal var _attoseconds: _Int128 {
    _Int128(high: _high, low: _low)
  }

  /// The composite components of the `Duration`.
  ///
  /// This is intended for facilitating conversions to existing time types. The
  /// attoseconds value will not exceed 1e18 or be lower than -1e18.
  public var components: (seconds: Int64, attoseconds: Int64) {
    let seconds = _attoseconds / 1_000_000_000_000_000_000
    let attoseconds =
      Int64((_attoseconds - seconds * 1_000_000_000_000_000_000))
    return (Int64(seconds), attoseconds)
  }
}


  public static func nanoseconds<T: BinaryInteger>(
    _ nanoseconds: T
  ) -> Duration {
    return Duration(_attoseconds:
      _Int128(nanoseconds).multiplied(by: 1_000_000_000))
  }
}

