I guess you also throw an IllegalArgumentException if endWallClockTime < startWallClockTime
Also, can the wall clock time be less than zero? Sys.currentTimeMillis returns a number of millist since 196x, which for any real purpose should be a positive value.