public virtual object GetValue(string name, out CFLType type)
        {
            if (!_vStack.ContainsKey(name))
            {
                throw new InvalidOperationException("Cannot retrieve value of undefined variable.");
            }

            VariableInfo i = _vStack[name];

            type = i.Type;
            return(_stack[i]);
        }
        private VariableInfo SetVariableAndType(string name, CFLType type, bool fix = false, bool over = true)
        {
            if (_vStack.ContainsKey(name))
            {
                if (over)
                {
                    VariableInfo i = _vStack[name];
                    i.Type    = type;
                    _stack[i] = null;
                    return(i);
                }
                else
                {
                    throw new InvalidOperationException("One scope may not contain two variables with same name.");
                }
            }

            VariableInfo info = new VariableInfo(name, this, fix);

            info.Type = type;
            _stack.Add(info, null);
            _vStack.Add(name, info);
            return(info);
        }