/**
  * remove an array of files in a directory, and a list of subdirectories
  * which will only be deleted if 'includeEmpty' is true
  * @param PhingFile $d directory to work from
  * @param array &$files array of files to delete; can be of zero length
  * @param array &$dirs array of directories to delete; can of zero length
  */
 private function removeFiles(PhingFile $d, &$files, &$dirs)
 {
     if (count($files) > 0) {
         $this->log("Deleting " . count($files) . " files from " . $d->__toString());
         for ($j = 0, $_j = count($files); $j < $_j; $j++) {
             $f = new PhingFile($d, $files[$j]);
             $this->log("Deleting " . $f->getAbsolutePath(), $this->verbosity);
             try {
                 $f->delete();
             } catch (Exception $e) {
                 $message = "Unable to delete file " . $f->__toString() . ": " . $e->getMessage();
                 if ($this->failonerror) {
                     throw new BuildException($message);
                 } else {
                     $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
                 }
             }
         }
     }
     if (count($dirs) > 0 && $this->includeEmpty) {
         $dirCount = 0;
         for ($j = count($dirs) - 1; $j >= 0; --$j) {
             $dir = new PhingFile($d, $dirs[$j]);
             $dirFiles = $dir->listDir();
             if ($dirFiles === null || count($dirFiles) === 0) {
                 $this->log("Deleting " . $dir->__toString(), $this->verbosity);
                 try {
                     $dir->delete();
                     $dirCount++;
                 } catch (Exception $e) {
                     $message = "Unable to delete directory " . $dir->__toString();
                     if ($this->failonerror) {
                         throw new BuildException($message);
                     } else {
                         $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
                     }
                 }
             }
         }
         if ($dirCount > 0) {
             $this->log("Deleted {$dirCount} director" . ($dirCount == 1 ? "y" : "ies") . " from " . $d->__toString());
         }
     }
 }