on the first point. the one thing I see as a user, is that the first argument is a long and the unit type is encoded in the name. the compiler doesn't enforce messing up on the second piece of that information with a Long type but a  duration would. For the impl you can pass down `duration.inMillis` which gives it what it needs but from the interface level you can't get a durations unit information wrong. 4.seconds, 1.hours, ect.

on the second point. I hear you man. I just brought it up because the impl of a ttl mutable cache was leaking into a ttl method. I guess I'm not really opposed to not having it be default. The choice of a default may be arbitrary as you pointed out. LinkedHashMaps default capacity is probably not useful for people writing applications since java 1.4 :)