compareTo method
- PreciseDateTime other
override
    Compares this object to another object.
Returns a value like a Comparator when comparing this to other.
That is, it returns a negative integer if this is ordered before other,
a positive integer if this is ordered after other,
and zero if this and other are ordered together.
The other argument must be a value that is comparable to this object.
Implementation
@override
int compareTo(PreciseDateTime other) {
  if (val == other.val) {
    return microsecond.compareTo(other.microsecond);
  }
  return val.compareTo(other.val);
}