protected function findFirstMatchingOpener(Delimiter $closer, $openersBottom, Delimiter $stackBottom = null)
{
$closerChar = $closer->getChar();
$opener = $closer->getPrevious();
while ($opener !== null && $opener !== $stackBottom && $opener !== $openersBottom[$closerChar]) {
if ($opener->getChar() === $closerChar && $opener->canOpen()) {
return $opener;
}
$opener = $opener->getPrevious();
}
}