private function parseFunctionArgument($funcName, $context)
    {
        try
        {
            return $this->parsePrimitiveValue();
        }
        catch(\Exception $e)
        {
            $name = $this->tokenizer->getTokenValue();

            if($name)
            {
                // ADVANCE
                $this->tokenizer->readNextToken();

                // NESTED FUNCTION
                if($this->tokenizer->is(TokenType::LEFT_PAREN))
                {
                    return $this->parseFunctionExpression($name, $context);
                }

                // ARBITRARY IDENTIFIER, e.g. SOQL NAME
                return new AST\SoqlName($name);
            }
            throw $e;
        }
    }