/// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="jsonConverter">The <see cref="IJsonConverter"/> instance.</param>
        /// <param name="cachedExpressionCompiler">The <see cref="ICachedExpressionCompiler"/> instance.</param>
        public ExpressionConverter(IJsonConverter jsonConverter, ICachedExpressionCompiler cachedExpressionCompiler)
        {
            if (jsonConverter == null)
            {
                throw new ArgumentNullException("jsonConverter");
            }
            if (cachedExpressionCompiler == null)
            {
                throw new ArgumentNullException("cachedExpressionCompiler");
            }

            this.jsonConverter            = jsonConverter;
            this.cachedExpressionCompiler = cachedExpressionCompiler;
        }
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="jsonConverter">The <see cref="IJsonConverter"/> instance.</param>
        /// <param name="cachedExpressionCompiler">The <see cref="ICachedExpressionCompiler"/> instance.</param>
        /// <param name="loggerFactory">The <see cref="ICommonLoggerFactory"/> instance.</param>
        /// <exception cref="ArgumentNullException"><paramref name="loggerFactory"/> is <see langword="null" />.</exception>
        public ExpressionConverter(IJsonConverter jsonConverter, ICachedExpressionCompiler cachedExpressionCompiler, ICommonLoggerFactory loggerFactory)
            : base(loggerFactory)
        {
            if (jsonConverter == null)
            {
                throw new ArgumentNullException("jsonConverter");
            }
            if (cachedExpressionCompiler == null)
            {
                throw new ArgumentNullException("cachedExpressionCompiler");
            }

            this.jsonConverter            = jsonConverter;
            this.cachedExpressionCompiler = cachedExpressionCompiler;
        }