code: public final int compareTo(final Dur arg0) {
          int result;
          if (isNegative() != arg0.isNegative()) {
              // return Boolean.valueOf(isNegative()).compareTo(Boolean.valueOf(arg0.isNegative()));
              // for pre-java 1.5 compatibility..
              if (isNegative()) {
                  return Integer.MIN_VALUE;
              }
              else {
                  return Integer.MAX_VALUE;
              }
          }
          else if (getWeeks() != arg0.getWeeks()) {
              result = getWeeks() - arg0.getWeeks();
          }
          else if (getDays() != arg0.getDays()) {
              result = getDays() - arg0.getDays();
          }
          else if (getHours() != arg0.getHours()) {
              result = getHours() - arg0.getHours();
          }
          else if (getMinutes() != arg0.getMinutes()) {
              result = getMinutes() - arg0.getMinutes();
          }
          else {
              result = getSeconds() - arg0.getSeconds();
          }
          // invert sense of all tests if both durations are negative
          if (isNegative()) {
              return -result;
          }
          else {
              return result;
          }
      }
docs: Compares this duration with another, acording to their length.
  @param arg0 another duration instance
  @return a postive value if this duration is longer, zero if the duration
  lengths are equal, otherwise a negative value