public function generatePassword()
{
if ($this->dirtyCheck) {
if (!$this->validLimits()) {
throw new ImpossibleMinMaxLimitsException();
}
$this->dirtyCheck = false;
}
do {
$password = parent::generatePassword();
} while (!$this->validatePassword($password));
return $password;
}