A class type T is rcu-protectable
if it has exactly one base class of type rcu_obj_base<T, D>
for some D, and that base is public and non-virtual, and
it has no base classes of type rcu_obj_base<X, Y>
for any other combination X, Y.
An object is rcu-protectable if it is of rcu-protectable type.
every invocation of unlockU2 on dom
such that L is sequenced before U2 and U2 is sequenced before U
corresponds to an invocation of lockL2 on dom
such that L is sequenced before L2 and L2 is sequenced before U2.
Given a region of RCU protection R on a domain dom and
given an evaluation E that scheduled another evaluation F in dom,
if E does not strongly happen before the start of R,
the end of R strongly happens before evaluating F.