/// <summary>
        /// Create a ValidationPolicyCommandInterest with default Options.
        /// </summary>
        ///
        /// <param name="innerPolicy"></param>
        /// <exception cref="System.AssertionError">if innerPolicy is null.</exception>
        public ValidationPolicyCommandInterest(ValidationPolicy innerPolicy)
        {
            this.container_             = new ArrayList <LastTimestampRecord>();
            this.nowOffsetMilliseconds_ = 0;
            options_ = new ValidationPolicyCommandInterest.Options();

            if (innerPolicy == null)
            {
                throw new AssertionError("inner policy is missing");
            }

            setInnerPolicy(innerPolicy);
        }
        /// <summary>
        /// Create a ValidationPolicyCommandInterest.
        /// </summary>
        ///
        /// <param name="innerPolicy"></param>
        /// <param name="options">The stop-and-wait command Interest validation options.</param>
        /// <exception cref="System.AssertionError">if innerPolicy is null.</exception>
        public ValidationPolicyCommandInterest(ValidationPolicy innerPolicy,
                                               ValidationPolicyCommandInterest.Options options)
        {
            this.container_             = new ArrayList <LastTimestampRecord>();
            this.nowOffsetMilliseconds_ = 0;
            // Copy the Options.
            options_ = new ValidationPolicyCommandInterest.Options(options);

            if (innerPolicy == null)
            {
                throw new AssertionError("inner policy is missing");
            }

            setInnerPolicy(innerPolicy);

            if (options_.gracePeriod_ < 0.0d)
            {
                options_.gracePeriod_ = 0.0d;
            }
        }
 /// <summary>
 /// Create a ValidationPolicyCommandInterest.Options from the given options.
 /// </summary>
 ///
 /// <param name="options"></param>
 public Options(ValidationPolicyCommandInterest.Options options)
 {
     gracePeriod_    = options.gracePeriod_;
     maxRecords_     = options.maxRecords_;
     recordLifetime_ = options.recordLifetime_;
 }