Hmmm, don't you want duration() to see if something has expired? That could be used for testing, to make sure it expires when we want, as opposed to relying on the currentTimeMillis (wall clock), which AFAIK is what you wanna be using with the wall clock (and not System.nanoTime())? Right?