Is there an implicit assumption that this will only ever be called on the same thread? 

If so, this should be documented in the javadocs (and if that's the case, why does `sequenceStart` need to be `volatile` ?)

If not, this won't work.