public function renderMulti($content, $tag_type = 'default', array $multi = array(), $args = null, $placeholder_mask = '@%s@')
    {
        if (is_null($args)) $args = array();
        if (!is_array($args)) $args = array( $args );

        // rendering all placeholders
        $placeholders_table = array();
        foreach($multi as $item=>$item_args) {
            $placeholders_table[$item] = call_user_func_array(
                array($this->getAdapter(), 'renderTag'),
                $item_args
            );
        }

        // replacing placeholders
        $full_content = $content;
        foreach ($placeholders_table as $name => $value) {
            $full_content = strtr($full_content, array(sprintf($placeholder_mask, $name) => $value));
        }

        // rendering final output
        $output = $this->getAdapter()->renderTag($full_content, $tag_type, $args);

        $this->setOutput($output);
        if ($this->getFlag() & self::OUTPUT_APPEND) {
            return $this;
        } elseif ($this->getFlag() & self::OUTPUT_BY_LINE) {
            return $output;
        }
    }