public VariableApply(ParseInfo parseInfo, Scope scope, Scope getter, IVariableInstance variable, Identifier variableContext)
        {
            Variable   = variable;
            _parseInfo = parseInfo;
            _name      = variableContext.Token.Text;
            CallRange  = variableContext.Token.Range;
            getter     = getter ?? scope;

            // Get the index.
            if (variableContext.Index != null)
            {
                _index = new IExpression[variableContext.Index.Count];
                for (int i = 0; i < _index.Length; i++)
                {
                    _index[i] = parseInfo.GetExpression(scope, variableContext.Index[i].Expression, getter: getter);
                }
            }

            // Get the generics.
            if (variableContext.TypeArgs != null)
            {
                _generics = new CodeType[variableContext.TypeArgs.Count];
                for (int i = 0; i < _generics.Length; i++)
                {
                    _generics[i] = TypeFromContext.GetCodeTypeFromContext(parseInfo, getter, variableContext.TypeArgs[i]);
                }
            }

            VariableCall = Variable.GetExpression(_parseInfo, CallRange, _index, _generics);
        }