```\n        function claimSigner() public virtual {\n             if (signerCount == maxSigners) {\n                revert MaxSignersReached();\n        }\n        if (safe.isOwner(msg.sender)) {\n                revert SignerAlreadyClaimed(msg.sender);\n            }\n        if (!isValidSigner(msg.sender)) {\n             revert NotSignerHatWearer(msg.sender);\n         }\n         _grantSigner(msg.sender);\n           }\n```\n