fun <T> atomicLazy(initializer: () -> T): Lazy<T>
Atomic lazy initializer, could be used in frozen objects, freezes initializing lambda,
so use very carefully. Also, as with other uses of an AtomicReference may potentially
leak memory, so it is recommended to use
atomicLazy in cases of objects living forever,
such as object signletons, or in cases where it's guaranteed not to have cyclical garbage.