protected function parseChild(string $parserClassName, $tokens = null, $skip = true)
    {
        if (is_null($tokens))
        {
            $tokens = $this->getRemainingTokens(); 
        }

        $parser = new $parserClassName($tokens);
        $node = $parser->parse();

        // Update the current index based on the work of the child parser.
        if ($skip) 
        {
            $this->skipToken($parser->getParsedTokensCount());
        }

        // finally return the parsed node
        return $node;
    }