protected function makeBackup()
    {
        $path_plain      = $this->getPlainPath();
        $path_obfuscated = $this->getObfuscatedPath();
        $path_backup     = $this->getBackupPath();

        // Renomeia o diretório com os arquivos originais
        // para um novo diretório de backup
        if (is_dir($path_backup) == true) {
            $this->getObfuscator()->addRuntimeMessage('A previous backup already exists!');
            return false;

        } elseif(rename($path_plain, $path_backup) === false) {
            $this->getObfuscator()->addErrorMessage('Could not back up. Operation canceled!');
            return false;
        }

        // Renomeia o diretório com os arquivos ofuscados
        // para ser o novo diretório em execução
        if(rename($path_obfuscated, $path_plain) === false) {
            $this->getObfuscator()->addErrorMessage('Obfuscated directory could not become the main directory!');
            return false;
        }

        // Renomeia os includes do autoloader
        if ($this->prepareAutoloaderFile() == false) {
            $this->getObfuscator()->addErrorMessage('Unable to prepare autoloader file!');
            return false;
        }

        return true;
    }