public Issue(
            ErrorCode errorCode,
            CommonSyntaxNode syntaxNode,
            ISymbol symbol)
        {
            #region Input validtion

            if (!Enum.IsDefined(typeof(ErrorCode), errorCode))
            {
                throw new ArgumentException("errorCode is not defined.", "errorCode");
            }

            if (syntaxNode == null)
            {
                throw new ArgumentNullException("syntaxNode");
            }

            if (symbol == null)
            {
                throw new ArgumentNullException("symbol");
            }

            #endregion

            _errorCode = errorCode;
            _description = DescriptionResolver.GetDescription(errorCode);
            _syntaxNode = syntaxNode;
            _symbol = symbol;
            _location = syntaxNode.GetLocation();

            _sourceLineNumber = GetSourceLineNumber();
            _sourceLineText = GetSourceLineText(_sourceLineNumber);
            _sourceFileName = GetSourceFileName();
        }