try {
    $h->insert(4);
    echo "inserted 4\n";
} catch (Exception $e) {
    echo "Exception: " . $e->getMessage() . "\n";
}
try {
    var_dump($h->extract());
} catch (Exception $e) {
    echo "Exception: " . $e->getMessage() . "\n";
}
try {
    var_dump($h->extract());
} catch (Exception $e) {
    echo "Exception: " . $e->getMessage() . "\n";
}
echo "Recovering..\n";
$h->recoverFromCorruption();
try {
    var_dump($h->extract());
} catch (Exception $e) {
    echo "Exception: " . $e->getMessage() . "\n";
}
try {
    var_dump($h->extract());
} catch (Exception $e) {
    echo "Exception: " . $e->getMessage() . "\n";
}
?>
===DONE===
                if ($v1 < $v2) {
                    return -1;
                } else {
                    return 0;
                }
            }
        } else {
            throw new Exception('Compare exception');
        }
    }
}
$heap = new myHeap();
$heap->insert(1);
$heap->insert(2);
$heap->insert(3);
$heap->insert(4);
$heap->allow_compare = false;
var_dump($heap->isCorrupted());
try {
    $heap->extract();
} catch (Exception $e) {
    echo "Compare Exception: " . $e->getMessage() . PHP_EOL;
}
try {
    $heap->top();
} catch (Exception $e) {
    echo "Corruption Exception: " . $e->getMessage() . PHP_EOL;
}
var_dump($heap->isCorrupted());
$heap->recoverFromCorruption();
var_dump($heap->isCorrupted());