public static Token of(TokenDomain domain, String secretTokenString) {
        return new Token(domain, secretTokenString);
    }
@Test
    void different_check_hash_domains_give_different_outputs() {
        var d1 = TokenDomain.of("domain: 1");
        var d2 = TokenDomain.of("domain: 2");
        var d3 = TokenDomain.of("domain: 3");
        assertEquals("cc0c504b52bfd9b0a9cdb1651c0f3515", TokenCheckHash.of(Token.of(d1, "foo"), 16).toHexString());
        assertEquals("a27c7fc350699c71bc456a86bd571479", TokenCheckHash.of(Token.of(d2, "foo"), 16).toHexString());
        assertEquals("119cc7046689e6de796fd4005aaab6dc", TokenCheckHash.of(Token.of(d3, "foo"), 16).toHexString());
    }