If no changes are possible, a 'fail' should occur. The setters could fail. If the 'fail' is here after 'unless @flush_required' then auditing would work; the fail would happen only if changes were required.