public function close()
    {
        if ($this->opened < 1) {
            throw new LogicException('It is not possible to close a never opened block.');
        }
        $args = $this->args;
        $this->opened--;
        $this->opened === 0 and $this->args = [];
        array_unshift($args, ob_get_clean());
        $block = call_user_func_array($this->callback, $args);

        return is_string($block) ? $block : '';
    }