When .true., a failed check increments the counter instead of halting,
allowing surface-by-surface iteration to continue. Call
did_fail_any_sanity_check to detect failures.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.