public override object VisitFunctionCallStatement([NotNull] ClepsParser.FunctionCallStatementContext context)
        {
            IValue target;

            if (context.rightHandExpression() == null)
            {
                //if no target is specified, pretend this is called on 'this'
                target = CodeGenerator.GetThisInstanceValue(new BasicClepsType(FullyQualifiedClassName));
            }
            else
            {
                target = Visit(context.rightHandExpression()) as IValue;
            }

            IValue functionCall = doFunctionCall(context.functionCall(), target, target.ExpressionType, true /* allowVoidReturn */);

            CurrMethodGenerator.CreateFunctionCallStatement(functionCall);

            return(true);
        }
        public override object VisitFunctionCallStatement([NotNull] ClepsParser.FunctionCallStatementContext context)
        {
            IValue expressionValue     = Visit(context.rightHandExpression()) as IValue;
            bool   isMembersAccessible = !expressionValue.ExpressionType.IsStaticType;

            IValue          ret            = doFunctionCall(context.functionCall(), expressionValue.ExpressionType, isMembersAccessible, true /* allowVoidReturn */);
            IMethodRegister methodRegister = CodeGenerator.GetMethodRegister(FullyQualifiedClassName, CurrMemberIsStatic, CurrMemberType, CurrMemberName);

            methodRegister.CreateFunctionCallStatement(ret);

            return(ret);
        }