The function has a little typo in the second var that messes everything.
public function compareTableNames($name1,$name2)
{
$name1=str_replace(array('[',']'),'',$name1);
$name1=str_replace(array('[',']'),'',$name2);
return parent::compareTableNames(strtolower($name1),strtolower($name2));
}
The correct:
public function compareTableNames($name1,$name2)
{
$name1=str_replace(array('[',']'),'',$name1);
$name2=str_replace(array('[',']'),'',$name2);
return parent::compareTableNames(strtolower($name1),strtolower($name2));
}