private MemberDeclarationSyntax CreateMethod(VariableDeclarationSyntax node)
            {
                var invocationExpression = node.DescendantNodes().OfType <InvocationExpressionSyntax>().FirstOrDefault();
                var methodName           = invocationExpression.DescendantNodes().OfType <MemberAccessExpressionSyntax>().FirstOrDefault().GetLastToken().ValueText;
                var parameters           = GetParametersTypesByArguments(invocationExpression.ArgumentList);
                var type = semanticModel.GetTypeInfo(node.DescendantNodes().OfType <IdentifierNameSyntax>().FirstOrDefault());

                return(CodeElementFactory.CreareMethodDeclaration(CodeElementFactory.CreateType(type), methodName, parameters));
            }
            public override MemberDeclarationSyntax VisitInvocationExpression(InvocationExpressionSyntax node)
            {
                if (node.Expression == null)
                {
                    return(null);
                }
                if (node.Expression.Kind() != SyntaxKind.SimpleMemberAccessExpression)
                {
                    return(null);
                }
                var simpleMemberAccessExpression = node.Expression as MemberAccessExpressionSyntax;
                var left = simpleMemberAccessExpression.Expression as IdentifierNameSyntax;

                if (left == null || left.Identifier == null || left.Identifier.Text != localVaribleName)
                {
                    return(null);
                }
                return(CodeElementFactory.CreareMethodDeclaration(CodeElementFactory.CreateType(SyntaxKind.VoidKeyword),
                                                                  simpleMemberAccessExpression.Name.Identifier.Text,
                                                                  GetParametersTypesByArguments(node.ArgumentList)
                                                                  ));
            }