code: public static int
  compare(long serial1, long serial2) {
  	if (serial1 < 0 || serial1 > MAX32)
  		throw new IllegalArgumentException(serial1 + " out of range");
  	if (serial2 < 0 || serial2 > MAX32)
  		throw new IllegalArgumentException(serial2 + " out of range");
  	long diff = serial1 - serial2;
  	if (diff >= MAX32)
  		diff -= (MAX32 + 1);
  	else if (diff < -MAX32)
  		diff += (MAX32 + 1);
  	return (int)diff;
  }
docs: Compares two numbers using serial arithmetic.  The numbers are assumed
  to be 32 bit unsigned integers stored in longs.
  @param serial1 The first integer
  @param serial2 The second integer
  @return 0 if the 2 numbers are equal, a positive number if serial1 is greater
  than serial2, and a negative number if serial2 is greater than serial1.
  @throws IllegalArgumentException serial1 or serial2 is out of range