faster speed if asserts are enabled.  zero overhead if asserts are disabled.
no need to synchronize empty code
faster blocks based enumeration
faster if asserts are disabled
less synchronization lock contention - get lock, get in, get out.