/**
  * {@inheritdoc}
  */
 public function canResend(ConfirmationSubjectInterface $subject)
 {
     if ($subject->isConfirmationConfirmed()) {
         throw new ConfirmationException('ui.trans.user.confirmation.resend.confirmed');
     }
     if (null === ($timeAware = $this->options['token_resend_time_aware'])) {
         return true;
     }
     if (!($time = $subject->getConfirmationRequestedAt())) {
         return true;
     }
     $time->add(\DateInterval::createFromDateString($timeAware));
     $valid = $time->getTimestamp() <= (new \DateTime())->getTimestamp();
     if (false === $valid) {
         $exception = new InvalidTokenResendTimeException('ui.trans.user.confirmation.invalid_time');
         $exception->setTime($time);
         $exception->setTimeAware($timeAware);
         throw $exception;
     }
     return $valid;
 }