public function push($type, $tag, $nesting)
    {
        if ($this->pending) {
            $this->pushPending();
        }

        $token = $this->createToken($type, $tag, $nesting);

        if ($nesting < 0) { $this->level--; }
        $token->level = $this->level;
        if ($nesting > 0) { $this->level++; }

        $this->pendingLevel = $this->level;
        $this->tokens[] = $token;
        return $token;
    }