static T GetOrRegisterHolder() { if (ms_key == null) { return(default(T)); } var funcPtr = default(IntPtr); if (InstanceGetters.TryGet(ms_key, out funcPtr)) { using (InstanceGetters.DisableProcessing()) return(GetHolderCore(ms_t, funcPtr)); } else { var funcPtrTmp = default(IntPtr); using (InstanceGetters.DisableProcessing()) funcPtrTmp = GetFunctionPointerCore(ms_t); while (!InstanceGetters.GetOrAdd(ms_key, funcPtrTmp, out funcPtr)) { ; } using (InstanceGetters.DisableProcessing()) return(GetHolderCore(ms_t, funcPtr)); } }