public override newObjectClass newObject(newObjectClass context)
        {
            List <BaseAHKNode> parameterList = null;

            switch (context.className)
            {
            case functionCallClass o:
                parameterList = o.functionParameterList;
                break;

            case dotUnwrapClass o:
                parameterList = ((functionCallClass)o.variableOrFunction).functionParameterList;
                break;
            }
            for (int i = 0; i < parameterList.Count; i++)
            {
                parameterList[i] = traverser.objectDispatcher(parameterList[i]);
            }

            var scope = scopeChain(context.chain, indexed);

            BaseAHKNode retVal = null;

            switch (context.className)
            {
            case functionCallClass o:
                o.extraInfo = scope;
                retVal      = createNewInstance(o);
                break;

            case dotUnwrapClass o:
                o.variableOrFunction.extraInfo = scope;
                retVal = createNewInstance((functionCallClass)o.variableOrFunction);
                break;
            }

            if (retVal == null)
            {
                return(null);
            }

            // var retVal = scopeAndVariableOrFunction(context);
            context.extraInfo = retVal is VariableValue v? v.Value : retVal.extraInfo;
            return(context);
        }
 public override newObjectClass newObject(newObjectClass context)
 {
     return(visitor.newObject(context));
 }