anchor.diff:  
       constructor(address minter) ERC20("MyToken", "TKN") {
           // Grant the minter role to a specified account
  -        _setupRole(MINTER_ROLE, minter);
  +        _grantRole(MINTER_ROLE, minter);
       }
   
       function mint(address to, uint256 amount) public {
  
positive.code: [[granting-and-revoking]]
  === Granting and Revoking Roles
  
  The ERC20 token example above uses `_setupRole`, an `internal` function that is useful when programmatically assigning roles (such as during construction). But what if we later want to grant the 'minter' role to additional accounts?
  
  By default, **accounts with a role cannot grant it or revoke it from other accounts**: all having a role does is making the `hasRole` check pass. To grant and revoke roles dynamically, you will need help from the _role's admin_.
  
  
negative.code:     bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");
  
      constructor(address minter, address burner) ERC20("MyToken", "TKN") {
          _grantRole(MINTER_ROLE, minter);
          _grantRole(BURNER_ROLE, burner);
      }
  
      function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) {
  