code: @SuppressWarnings("PMD.LawOfDemeter")
      public <T> T validateAndDecrypt(final Key key, final Validator<T> validator) {
          return validator.validateAndDecrypt(key, this);
      }
docs: Check the validity of this token.
  
  @param key the secret key against which to validate the token
  @param validator an object that encapsulates the validation parameters (e.g. TTL)
  @return the decrypted, deserialised payload of this token
  @throws TokenValidationException if <em>key</em> was NOT used to generate this token