public virtual Task Create(SingleUseToken token, UtcDateTime expiration) { Guard.Null(nameof(token), token); var record = new SingleUseTokenData(token, expiration); if (record.IsExpired(this._clock)) { throw new InvalidOperationException("Unable to create this token because it will have already expired."); } return(this.Create(record)); }