@Override
    public String toString() {
        return "UpdatableToken{" +
               "sub=" + NullSafe.get(mutableState.jwtClaims, claims ->
                JwtUtil.getClaimValue(claims, OpenId.CLAIM__SUBJECT).orElse(null)) +
               ", preferredUsername=" + NullSafe.get(mutableState.jwtClaims, claims ->
                JwtUtil.getClaimValue(claims, OpenId.CLAIM__PREFERRED_USERNAME).orElse(null)) +
               ", expireTimeWithBuffer=" + Instant.ofEpochMilli(mutableState.expireTimeWithBufferEpochMs) +
               ", timeTilExpire=" + Duration.between(Instant.now(), getExpireTime()) +
               '}';
    }
@return The time the token will expire (with a small buffer before the actual expiry included)
stroom-security/stroom-security-common-impl/src/main/java/stroom/security/common/impl/UpdatableToken.java