public ExpressionKind KindOfAssignmentTest(ExpressionKind kind)
        {
            // Arrange
            var helper = new ExpressionKindHelper();

            // Assert
            return helper.KindOfAssignment(kind);
        }
        public override ExpressionKind Eat(ISnapshot snapshot, IAssignmentExpression expression)
        {
            var sourceKind = Eater.Eat(snapshot, expression.Source);

            if (expression.Dest is IReferenceExpression)
            {
                var assignmentKind  = _expressionKindHelper.KindOfAssignment(sourceKind);
                var declaredElement = _eatExpressionHelper.GetReferenceElement(expression.Dest as IReferenceExpression);
                if (declaredElement is IVariableDeclaration)
                {
                    return(EatVariableDeclaration(snapshot, declaredElement as IVariableDeclaration, assignmentKind));
                }
            }

            throw new UnexpectedAssignDestinationException(expression.Dest, this, expression);
        }