How would you implement an instance variable in Swift that has to be thread-safely lazily initialized, but you also have code that depends on being called before it has been initialized, and needs to assert for that (thread-safely), what would you do? NSLock?