code: @SuppressWarnings("PMD.LawOfDemeter")
      public <T> T validateAndDecrypt(final Collection<? extends Key> keys, final Validator<T> validator) {
          return validator.validateAndDecrypt(keys, this);
      }
docs: Check the validity of this token against a collection of keys. Use this if you have implemented key rotation.
  
  @param keys the active keys which may have been used to generate token
  @param validator an object that encapsulates the validation parameters (e.g. TTL)
  @return the decrypted, deserialised payload of this token
  @throws TokenValidationException if none of the keys were used to generate this token