Per previous discussion this type is currently being used safely, but would be easy to accidentally use incorrectly.  We can remove it and replace its usage with something like the following:
_lock.EnterReadLock();
try { 
    _memberInfos.TryGetValue(memberInfo, out cachedAttributes);
}
finally { _lock.ExitReadLock(); }