template <typename, typename, typename>
class Guard
Base RAII type that automatically manages the duration of a lock acquisition.
TODO(eieio): Specializations handle exclusive and shared lock acquisitions.
These are largely identical except for the static lock analysis annotations.
See if there is away to factor out the common logic for better
maintainability.