protected function _doSpoilers_callback($matches)
{
$bq = $matches[1];
# trim one level of quoting - trim whitespace-only lines
$bq = preg_replace('/^[ ]*>![ ]?|^[ ]+$/m', '', $bq);
$bq = $this->runBlockGamut($bq);
# recurse
$bq = preg_replace('/^/m', " ", $bq);
# These leading spaces cause problem with <pre> content,
# so we need to fix that:
$bq = preg_replace_callback('{(\\s*<pre>.+?</pre>)}sx', array(&$this, '_doSpoilers_callback2'), $bq);
return "\n" . $this->hashBlock(Gdn_Format::spoilerHtml($bq)) . "\n\n";
}