public static InvocationExpression add_Invocation(this BlockStatement blockStatement, string typeName, string methodName, params object[] parameters) //, AstExpression expression)
        {
            if (methodName.valid().isFalse())
            {
                return(null);
            }

            Expression memberExpression = null;

            if (typeName.valid())
            {
                memberExpression = new MemberReferenceExpression(new IdentifierExpression(typeName), methodName);
            }
            else
            {
                memberExpression = new IdentifierExpression(methodName);
            }

            var memberReference = new InvocationExpression(memberExpression);

            if (parameters != null)
            {
                var arguments = new List <Expression>();
                foreach (var parameter in parameters)
                {
                    if (parameter is Expression)
                    {
                        arguments.add(parameter as Expression);
                    }
                    else
                    {
                        arguments.add(new PrimitiveExpression(parameter, parameter.str()));
                    }
                }

                memberReference.Arguments = arguments;
            }

            blockStatement.append(memberReference.expressionStatement());

            return(memberReference);
        }