public override object VisitAddExpression([NotNull] TinyScriptParser.AddExpressionContext context)
        {
            var ret = (Type)VisitMulExpression(context.mulExpression(0));

            if (context.ChildCount > 1)
            {
                Type typeAdd = null;
                for (int i = 1; i < context.ChildCount; i += 2)
                {
                    var op = context.GetChild(i).GetText();
                    var t2 = (Type)VisitMulExpression((TinyScriptParser.MulExpressionContext)context.GetChild(i + 1));
                    typeAdd = ret == typeof(string) ? ret : GetOpType(context, ret, t2);
                    if (ret == typeof(string) && t2.IsValueType)
                    {
                        _builder.Box(t2);
                    }
                    var b = OpBuilder.GetOpBuilder(typeAdd, context, _builder);
                    b.ProcessAdd(op);
                }
                return(typeAdd);
            }
            return(ret);
        }