protected function _getBlockLayoutHandles($block) {
        Varien_Profiler::start('turpentine::observer::esi::_getBlockLayoutHandles');
        $layout = $block->getLayout();
        $layoutXml = Mage::helper('turpentine/esi')->getLayoutXml();
        $activeHandles = array();
        // get the xml node representing the block we're working on (from the
        // default handle probably)
        $blockNode = Mage::helper('turpentine/esi')->getEsiLayoutBlockNode(
            $layout, $block->getNameInLayout());
        $childBlocks = Mage::helper('turpentine/data')
            ->getChildBlockNames($blockNode);
        foreach ($childBlocks as $blockName) {
            foreach ($layout->getUpdate()->getHandles() as $handle) {
                // check if this handle has any block or reference tags that
                // refer to this block or a child block, unless the handle name
                // is blank
                if ($handle !== '' && (strpos($handle, 'THEME') === 0 ||
                    $layoutXml->xpath(sprintf(
                        '//%s//*[@name=\'%s\']', $handle, $blockName )))) {
                    $activeHandles[] = $handle;
                }
            }
        }
        if ( ! $activeHandles) {
            $activeHandles[] = 'default';
        }
        Varien_Profiler::stop('turpentine::observer::esi::_getBlockLayoutHandles');
        return array_unique($activeHandles);
    }