/// <summary>
        /// Hidden constructor.
        /// </summary>
        internal RecordedDataSourceSelectorEventArgs(RecordedDataSource dataSource, IList<RecordedDataSourceResponse> responses,
                                int selectedResponseIndex, int requestNumber, byte[] requestDataAsBinary, string requestDataAsString,
                                string requestMethod, string requestContentType, object requestTag, HttpDataSourceResponseType responseType)
        {
            if (dataSource == null)
                throw new ArgumentNullException("dataSource");
            if (responses == null)
                throw new ArgumentNullException("responses");
            if (requestDataAsBinary == null)
                throw new ArgumentNullException("requestDataAsBinary");
            if (requestDataAsString == null)
                throw new ArgumentNullException("requestDataAsString");
            if (string.IsNullOrEmpty(requestMethod))
                throw new ArgumentNullException("requestMethod");

            DataSource = dataSource;
            Responses = responses;
            SelectedResponseIndex = selectedResponseIndex;
            RequestNumber = requestNumber;
            RequestDataAsBinary = requestDataAsBinary;
            RequestDataAsString = requestDataAsString;
            RequestMethod = requestMethod;
            RequestContentType = requestContentType;
            RequestTag = requestTag;
            ResponseType = responseType;
            SentAt = DateTime.Now;
        }
        /// <summary>
        /// Hidden constructor.
        /// </summary>
        internal RecordedDataSourceSelectorEventArgs(RecordedDataSource dataSource, IList <RecordedDataSourceResponse> responses,
                                                     int selectedResponseIndex, int requestNumber, byte[] requestDataAsBinary, string requestDataAsString,
                                                     string requestMethod, string requestContentType, object requestTag, HttpDataSourceResponseType responseType)
        {
            if (dataSource == null)
            {
                throw new ArgumentNullException("dataSource");
            }
            if (responses == null)
            {
                throw new ArgumentNullException("responses");
            }
            if (requestDataAsBinary == null)
            {
                throw new ArgumentNullException("requestDataAsBinary");
            }
            if (requestDataAsString == null)
            {
                throw new ArgumentNullException("requestDataAsString");
            }
            if (string.IsNullOrEmpty(requestMethod))
            {
                throw new ArgumentNullException("requestMethod");
            }

            DataSource            = dataSource;
            Responses             = responses;
            SelectedResponseIndex = selectedResponseIndex;
            RequestNumber         = requestNumber;
            RequestDataAsBinary   = requestDataAsBinary;
            RequestDataAsString   = requestDataAsString;
            RequestMethod         = requestMethod;
            RequestContentType    = requestContentType;
            RequestTag            = requestTag;
            ResponseType          = responseType;
            SentAt = DateTime.Now;
        }