def _build_list(self, matches, current_level='<STR_LIT:1>'):
lines = ['<STR_LIT>']<EOL>while matches and current_level <= matches[<NUM_LIT:0>][<NUM_LIT:0>]:<EOL><INDENT>lines.extend('<STR_LIT:U+0020>' + line for line in self._build_list_items(matches))<EOL><DEDENT>lines.append('<STR_LIT>')<EOL>return lines<EOL>
Builds an unordered HTML list out of the list of matches, stopping at the first match
        that is smaller than current_level (e.g. h1 < h2).

        This method uses mutual recursion with _build_list_items and expects _build_list_items to
        delete matches as it processes them.

        This method uses string comparison when comparing levels, taking advantage of the fact that
        ordering single-digit ASCII numerical character is the same as ordering single-digit
        integers. By default, the current_level is '1' so that it can process all headers.

        For efficiency reasons, this method doesn't concatenate the lines; callers of this method
        should perform the join after the call.