docs: public synchronized @Nonnull TokenUuidAndPlainValue generateNewToken(@Nonnull String name) {
          // 16x8=128bit worth of randomness, using brute-force you need on average 2^127 tries (~10^37)
          byte[] random = new byte[16];
          RANDOM.nextBytes(random);
          String secretValue = Util.toHexString(random);
          String tokenTheUserWillUse = HASH_VERSION + secretValue;
          assert tokenTheUserWillUse.length() == 2 + 32;
          
          String secretValueHashed = this.plainSecretToHashInHex(secretValue);
          
          HashValue hashValue = new HashValue(HASH_VERSION, secretValueHashed);
          HashedToken token = HashedToken.buildNew(name, hashValue);
          
          this.addToken(token);
          
          return new TokenUuidAndPlainValue(token.uuid, tokenTheUserWillUse);
      }