This module controls how each permission individually reacts to an access.
Although these functions take
protected as an argument, this is NOT because
we check protector violations here, but because some permissions behave differently
- A child node was read-accessed: UB on Disabled, noop on the rest.
- A child node was write-accessed:
Activeto obtain write permissions,
Disabledcannot obtain such permissions and produce UB.
- A non-child node was read-accessed: keep
Reservedbut mark it as
conflictedif it is protected; invalidate
- A non-child node was write-accessed: this makes everything
Disabledexcept for non-protected interior mutable
Reservedwhich stay the same.
- Dispatch handler depending on the kind of access and its position.