private MemberDeclarationSyntax CreateProperty(VariableDeclarationSyntax node)
            {
                var type         = semanticModel.GetTypeInfo(node.DescendantNodes().OfType <IdentifierNameSyntax>().FirstOrDefault());
                var propertyName = node.DescendantNodes().OfType <IdentifierNameSyntax>().LastOrDefault().Identifier.ValueText;

                return(CodeElementFactory.CreateProperty(CodeElementFactory.CreateType(type), propertyName));
            }
            public override MemberDeclarationSyntax VisitAssignmentExpression(AssignmentExpressionSyntax node)
            {
                if (node.Left == null || node.Right == null || node.OperatorToken == null || node.OperatorToken.Kind() != SyntaxKind.EqualsToken)
                {
                    return(null);
                }
                if (node.Left.Kind() != SyntaxKind.SimpleMemberAccessExpression)
                {
                    return(null);
                }
                var simpleMemberAccessExpression = node.Left as MemberAccessExpressionSyntax;
                var left = simpleMemberAccessExpression.Expression as IdentifierNameSyntax;

                if (left == null || left.Identifier == null || left.Identifier.Text != localVaribleName)
                {
                    return(null);
                }
                var typeInfo = semanticModel.GetTypeInfo(node.Right);

                return(CodeElementFactory.CreateProperty(CodeElementFactory.CreateType(typeInfo), simpleMemberAccessExpression.Name.Identifier.Text));
            }